1

我需要 Java 飞行记录来诊断生产 Weblogic 服务器上的性能问题。我还想获得 Weblogic 事件。从 Java Mission Control(或者在我的情况下为 JCMD)开始飞行记录与启动 WLDF 诊断图像捕获之间有什么区别吗?我知道 WLDF 除了 .jfr 之外还包含压缩文件,但现在我只对 HotspotJVM 和 Weblogic 事件的飞行记录 (.jfr) 感兴趣。

我问的原因是因为我注意到 WLDF 文档中称为配置 WLDF 诊断卷(关闭、低、中、高)的内容,您可以在其中设置要记录的 Weblogic 事件类型。在 weblogic java 实例上从 JCMD 开始飞行记录是否会包括预配置诊断卷中的 Weblogic 事件?还是您需要从 Weblogic 管理控制台启动它?

4

2 回答 2

1

记录到飞行记录器中的所有内容都记录到相同的缓冲区中。请参阅http://hirt.se/blog/?p=370。也就是说,WLDF 仪器设置将限制实际记录的内容。因此,有多种不同的方法可以实现您想要的。首先要做的是确保您已启用 WLDF 中的诊断卷以记录您希望 WLDF 记录到飞行记录器中的任何内容。例如“高”。

接下来,您可以:

  • 使用命令行标志开始连续记录,并使用配置为记录您感兴趣的模板。(例如,分析模板减去完整的线程堆栈转储事件。)

  • ...或使用 jcmd 开始录制,再次参考指定除了 WLDF 事件之外要录制的内容的模板。

  • ...或使用 JMC 做几乎相同的事情 - 使用您感兴趣的模板设置开始录制。

第一种选择的优点是您感兴趣的事件将始终可用,即使您转储任意时间段也是如此。在其他两种选择中,它们仅在您运行(可能)限时录制时可用。其他替代方案的优势在于,您只需为录制运行时额外事件的(通常很小的)额外开销付费。

于 2018-03-13T09:22:41.327 回答
1

WLS 中没有使用 jcmd 或 JMC 持续轮询以查看记录是否已启动的机制,如果是,则启用 WLDF 事件。

您必须在 WLDF GUI [1] 中单独启用它们。当您这样做时,您还将获得与您在创建默认记录时获得的大致对应的 JVM 事件。如果您想要更详细的信息(配置文件),您需要开始两个单独的重新编码。

[1] 很高兴知道 WLDF 事件是使用字节码检测添加的,因此在您启用诊断功能之前,这些事件甚至不在代码中。

于 2018-03-13T10:03:27.203 回答