【问题标题】:collecting JVM GC samples within a specific time range收集特定时间范围内的 JVM GC 样本
【发布时间】:2016-10-12 19:00:35
【问题描述】:

我正在尝试使用 'jstat' gcutil 命令获取 JVM GC 统计信息。

jstat -gcutil -t 32351

这是从当前时间返回给我的一个样本。

我也明白使用 $ jstat -gcutil -t 32351 1s 5 会从当前时间以 1s 的间隔返回 5 个样本。

我希望能够获得最近 5 分钟的 GC 统计信息。或在特定时间范围内。 我尝试在线浏览,但无法弄清楚。 有人可以指导我吗?

【问题讨论】:

  • 您能告诉我们您想用这个完成什么吗?为什么例如把 600 而不是 5 对你不起作用?如果您尝试关联 GC 事件的问题,我认为您可以尝试使用 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 和/或捕获其中一些事件的外部工具,例如jvisualvm
  • 您想在它提供实时统计信息的同时获取过去的统计信息,因此除非您将统计信息放入文件并查询该文件,否则我不确定是否可以完成
  • 我正在构建一个监控工具,在触发时(在特定时间运行)应该收集过去的 GC 统计信息(5 或 10 分钟)并进行验证。 (如 gc 计数在过去 5 分钟内不应超过 2)
  • @MonicaThaneer 在这种情况下,我加入了 Nicolas 关于将所有内容收集到文件中然后过滤相关部分的意见

标签: java linux garbage-collection jvm jstat


【解决方案1】:

命令jstat只提供live stats,如果你想访问过去的stats,你应该将输出流重定向到一个文件中并查询该文件.

例如,假设您希望每秒钟获取一次 java 进程的统计信息,您可以启动

jstat -gcutil <process-id> 1s > mystats

然后要获得最后的5 分钟,您可以简单地显示最后的300

tail -300 mystats 

【讨论】:

  • 但这会在启动后收集接下来 5 分钟的统计数据,对吗?这意味着我必须等待 5 分钟。相反,我试图从当前时间获取过去 5 分钟的样本......(我试图以特定的时间间隔监控统计数据,并且想要获取过去的统计数据而不是等待收集统计数据。)
  • 或者除了 jstat 之外还有其他方法可以使用吗?
  • 再次jstat 只提供实时统计数据而不是以前的统计数据,所以我相信这是您能做的最好的事情
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
相关资源
最近更新 更多