问题标签 [java-mission-control]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java-mission-control - 连接到在不同用户下运行的远程 Linux JVM
我在 RHEL7 远程 VM 上运行 Apache NiFi 1.2.0。以下是正在运行的 JVM 列表:
在我的本地 Windows 7 机器上,我有 jdk1.8.0_121,我正在尝试将 Java Mission Control 实用程序连接到“NiFi”JVM。
一些事实:
- 我希望监控的远程 RHEL JVM 使用用户“nifi”运行
- 由于我是“sudoer”,我使用自己的用户名“ojoqcu”通过 SSH(通过 Putty)连接到远程 VM,然后使用“sudo su - , su nifi”或简单的“sudo su nifi”。然后,我在不提供密码的情况下成为“nifi”用户
- 现在,可能需要一个 JMX URL 来将 jmc 连接到远程 VM,但是我应该使用什么端口号?是否有任何其他必须在远程 VM 上启动的进程?
java - Java任务控制监听器?
我目前有一些想要分析的 Java 代码。在阅读了一些关于它的有前途的东西后,我决定使用 Java Mission Control。但是,到目前为止,我咨询过的每个资源都告诉我首先启动我想要分析的进程,然后才在任务控制已经运行后“附加”或分析代码(例如来自 oracle 的这个视频:https ://youtu.be/WMEpRUgp9Y4?t=14m56s)。
有没有办法从一开始就进行分析?谢谢
java - Java Mission Control 说“很少有分析样本”,为什么,我的其他选择是什么?
我正在使用 Java Mission Control 分析 Java 应用程序,它在飞行记录的主页上说“即使 CPU 负载很高,该记录也包含很少的分析样本。因此分析数据可能不相关。”
好像说的是实话。我要求它每 10 毫秒采样 3 分钟,这应该是 18000 个样本,但我只看到 996 个样本。
它继续解释“因此分析数据可能不相关。这可能是因为应用程序正在运行大量 JNI 代码,或者 JVM 在 GC、类加载、JIT 编译等方面花费了大量时间。”
嗯,我没有任何本机方法,它不应该在我记录的阶段加载类或执行任何 JIT(以及代码的重复数字处理部分。)它看起来不像花费过多的垃圾收集时间。
我们曾经使用 hprof 来分析这个产品,并取得了很大的成功。Hprof 极大地帮助确定了我们依赖主线程执行的位置,因此我们可以将热点并行化为多个线程。但是该工具在 Java 9 中已停止使用,因此我们将继续使用 Java Mission Control。它有很多用途,但如果它无法识别 VM 线程在随机采样时间所在的行号,它就不是很有用。还有其他工具可以使用吗?或者,有没有办法从 Java Mission Control 中进一步调试?Java 9 中似乎也不再包含 JVisualVM。
java - Java Flight Control - 保留最后 N 分钟记录数据
如果可以在连续记录下仅保留最后 N 分钟的数据,有人可以让我知道通过 Java Mission Control 启动的 Java Flight Control 吗?
我已经完成了这个讨论,但我无法找到我必须在哪里传递disk=true
参数。我一直在使用的选项如下所示。
环境:-
- 爪哇 8
- Mac OS X
- Java 任务控制 5.5.1 (M5.5.1-15, 172852)
java - java serviceability agent vs jmc vs visualvm
java visualvm、java任务控制和java服务代理工具有什么区别?
我从高层次上知道 Visualvm 和 jmc 做了类似的工作,但它们在选择要分析的数据的方式上有所不同,但在可服务性代理方面根本没有太多?
提前致谢!
java - Java Flight Recorder 结果中的垃圾收集统计信息
我们在 CI 中有一项工作,它启动我们的 Java 应用程序并运行一些测试(测试充当应用程序的客户端)。该应用程序以我认为正确的 JVM 选项开始,以进行连续飞行记录:
它可以很好地生成 JFR 文件,我可以在 Java Mission Control 中打开它。除了上面的 JVM 选项,我们还可以选择启用 GC 日志记录:
这也很好。生成 gc 日志和安全点日志文件。但是,我注意到任务控制中的 GC 统计信息并未列出在应用程序生命周期内发生的所有 GC。例如,如果我使用 GCViewer ( https://github.com/chewiebug/GCViewer ) 打开 gc 日志,则会发生更多的 GC。
我在这里错过了什么吗?还是任务控制只打印“重要” gc ?
提前致谢!
java - 使用 Java GC 日志功能而不是 JMC 的用例有哪些?
Java Mission Control最近开源了。它是一个成熟的分析器,可以提供有关正在运行的应用程序的大量信息。它不仅可以显示特定应用程序正在使用多少内存或 Java GC 启动的频率,还可以提供有关网络利用率、CPU 利用率等的信息。
当在日常应用程序监控中使用 Java GC 日志记录功能更可取时,用例会是什么?
java - JDK 8 的 Java 飞行记录
我刚刚阅读了 Java Flight Recording 并发现它是一个商业功能。由于它是由-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
. 所以问题是我是否可以在我们的生产环境中使用它进行分析。我用
或者这样做是违法的?
java - 使用 Java Flight Recorder 和 Java Mission Control 监控锁
我想做的事
我有一个我正在尝试改进的 Java 程序。我怀疑代码中的同步块会损害性能,但我想在接触我的代码之前确保这是我的问题。
我是怎么做的
为了检查同步块是否确实存在问题,我使用 Flight Recorder 在测试服务器上记录了我的程序的执行,jfr
在我的桌面上下载了创建的文件并使用 Java Mission Control 打开它。但是Lock Instances
页面中Java Application
没有显示任何内容。我得到的唯一线索是结果视图中的一条消息,内容如下:
Java 阻止规则要求事件可从以下事件类型中获得:com.oracle.jdk.JavaMonitorEnter
因此,我假设必须与飞行记录器一起激活某种选项,但到目前为止我无法找到它。
我的问题
如何启用com.oracle.jdk.JavaMonitorEnter
Java Flight Recorder 记录类型中的事件?
或者我遗漏了其他东西,有更好的方法来确定在 Java 程序中对同步块进行了多少阻塞?
我的环境
我正在使用 Oracle JDK 版本 1.8.0_191。我在桌面上使用的 Java Mission Control 版本是 6.0.0。最后,我用来记录程序执行的命令如下:
我还应该补充一点,直接使用 Java Mission Control 连接到服务器不是一个选项(或者是吗?),因为我正在使用 ssh 反弹来实际连接到它......