问题标签 [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.

0 投票
1 回答
670 浏览

java - 我可以用 Java 代码分析 .hprof 文件吗?

我刚刚学习了 Java Mission Control。我想过如何用 Java 代码制作 Java Flight Recorder。我用很多不同的工具分析了堆文件,但这次我想用代码来做。

0 投票
1 回答
960 浏览

jfr - Java Mission Control 7.1 显示的方法分析示例太少

此处提出了类似的问题。

我正在使用根据说明构建的 JMC 7.1.0 分析 Open JDK 11.0.2 应用程序。

该应用程序使用了大约 3 个内核,没有过多的 gc,并且只有一小部分时间线程正在执行实际使用 CPU 的本机方法调用。

我使用的是 10 毫秒的默认方法采样间隔。我使用以下方法启用了安全点之外的调试元数据:

-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints

采集的样本数量比我预期的要少得多。保守地假设在每个采样点有 1 个运行非本机代码的 cpu 线程,我预计每秒 100 个样本。然而,我只看到 1 个样本/秒。

cpu 使用和方法示例

机器本身通常有 50% 空闲,所以采样线程不会被饿死。

是什么导致样本数量如此之低?

0 投票
1 回答
995 浏览

java - 如何在 Java Flight Recorder 采样中包含 IO 绑定方法?

我在启动时通过为被测 Java 程序指定以下 CLI 选项来启动 JFR:

测试执行需要 90 秒才能完成。

在 Java Mission Control 中打开 JFR 转储后,JMC 中的 Call Tree 选项卡如下所示:

在此处输入图像描述

每秒少于 1 个样本。这使得细节钻取、热门方法和概述选项卡实际上毫无用处。经过初步调查,确定方法采样设置为默认值 10 毫秒,事实证明,这个意外结果是因为在执行各种不同的数据库读取时,大约 98% 的 90 秒用于等待套接字 I/O ,所以我只在另外 2% 的时间里获取方法样本。

如何在方法时间中包含 I/O 绑定样本,以帮助定位花费最多时间等待数据库结果的跟踪?该过程包含多个地方的数据库查询,这些查询又从多个其他地方调用,因此猜测慢速调用路径并不容易。

0 投票
2 回答
199 浏览

java-11 - 如何在多个线程上追逐 JFR 事件

我正在努力使用自定义 JFR 事件对异步 servlet 请求处理进行建模。我面临的挑战是,在异步处理中,一个请求可能会被#dispatch()编辑多次。这意味着整个请求处理链可能会被执行多次,有时会在不同的线程中执行。如何使用自定义 JFR 事件对此进行建模?

对我有帮助的是“父”事件的概念(可能在不同的线程中)或事件的暂停和恢复。

编辑

稍微说明一下这个问题。处理异步请求可能需要 100 秒的挂钟时间。然而,在一个方法中,实际处理可能仅在 4 秒的用户时间内发生Servlet#service()

  • 线程A中的第二个0-1,Servlet#service()方法返回,AsyncContext开始
  • 线程 B 中的第二个 10-11,Servlet#service()方法返回,AsyncContext开始
  • 线程 A 中的第二个 80-81,Servlet#service()方法返回,AsyncContext开始
  • 线程 C 中的第二个 99-100,Servlet#service()方法返回

我只对在这三个线程中为这四个持续时间生成事件感兴趣,然后将它们与单个请求相关联。

0 投票
1 回答
204 浏览

java - 仍然可以使用 Java Mission Control 连接到远程 JMX 但证书已过期?

我有一个在远程服务器上运行的 java 进程,它使用com.sun.management.jmxremoteJVM 参数公开一个 SSL 配置的 JMX 端口。该过程使用包含自签名证书的密钥库。

我在本地机器上运行 Java Mission Control (JMC) 以连接到这个远程 JMX 端口。我已经使用从远程密钥库导入自签名证书的信任库设置了 JMC。这一切都很好,我可以按预期连接安全 SSL。

我最近检查了自签名证书的详细信息,很惊讶地发现它在一个月前就过期了,因为我本来预计无法使用 JMC 连接到远程进程,但我已经能够连接了很好,没有过期警告。

我已经确认它确实在使用此证书,因为当我在没有信任库的情况下运行 JMC 并尝试连接时,我得到了证书路径构建异常。我还查看了 SSL 调试,可以看到使用了证书。

谁能向我解释为什么我仍然能够使用过期证书建立此连接?如果这个过程暴露了我在浏览器中连接的 RESTful 服务,我会期望无法连接,或者我只会收到警告(或者在 JMC 中什么都没有)。

谢谢你的时间。

0 投票
0 回答
62 浏览

java - 远程 JVM 的 Java Mission Control(飞行记录器)内存/活动对象视图空白

使用 OpenJDK 11 中的 Java Mission Control 7。当我对在本地 PC 上运行的 JVM 进行飞行记录时,我会在 Live Objects 选项卡中获取数据

但是,当我对远程 JVM 运行相同的设置时,我会得到分配堆栈跟踪,但 Live Objects 选项卡始终为空白(没有 gc 根信息)。远程 VM 也是 Java 11。

实时对象捕获是否适用于远程 VM?我是否需要在那些默认情况下不会启用的远程虚拟机上启用任何东西?

0 投票
1 回答
117 浏览

java - Max Live Size 和 Max Live Count 没有意义

在“内存”选项卡中查看时,我有一个具有 8.96 GiB Max Live Size 的类,而 Max Live Count 为 401,000,000。

这是一个 Scala Cons类,它是类型为 LinkedList 的元素Byte。按照这个逻辑,401M 字节是 401 MiB(可能是某个常数的倍数),所以我不明白为什么实时大小是 8.96 GiB,这要大几个数量级。

在此处输入图像描述

有人可以帮我理解这一点吗?

0 投票
1 回答
225 浏览

java - 使用 Flight Recorder 和 JDK Mission Control 计算更多方法

背景

我正在尝试使用 Flight Recorder 检查我的 Java 批处理应用程序以提高启动性能。现在启动大约需要 20 秒,而我正在努力使其不到 10 秒。

该应用程序使用 Spring Boot 2.2 和 Spring Batch 构建,并在 JDK 11 上运行。我使用的是 Flight Recorder 而不是 VisualVM,因为 JDK 11 不包含开箱即用的 VisualVM(在检查环境中安装其他工具并非不可能,但受到限制)。

问题

我认为我可以使用 Flight Recoder 检查启动过程,所以我运行了这样的应用程序:

但 Mission Control 在“方法分析”面板中仅显示约 100 个计数。了解整个启动过程的趋势并检查哪种方法在该过程中花费的时间最多,这太少了。

问题

如何使用 Flight Recorder 和 JDK Mission Control 获取更多方法计数?文件中的哪个参数.jfc会影响方法计数的数量?

0 投票
2 回答
346 浏览

java - Java Flight Recorder - 没有活动对象

我在 JDK 1.8_261 上运行 JFR。

我正在使用这些 VM 选项运行我的应用程序:

这是profile.jfc我正在使用的文件:https ://gist.github.com/oripwk/e7d598f90e567a658cd767b16379f281

但是,正如您在屏幕截图中看到的那样,使用 JDK Mission Control 打开文件时,我看不到实时对象。

我需要做什么才能启用动态对象?

在此处输入图像描述

0 投票
1 回答
172 浏览

java - Java Flight Recorder - 查找文件描述符泄漏

M Java 应用程序可能存在文件描述符泄漏,因为我遇到了Too many open files异常。

我正在使用 JFR 运行我的应用程序,当我检查文件 I/OI 时几乎看不到任何 I/O 计数。是否可以使用 JFR 查找打开文件但不关闭文件的代码?

在此处输入图像描述