在连续集成中监视Java堆的用法



我想在产品的内存消耗中发现不良趋势。我有一些想法:

  1. 用Activ垃圾收集日志在CI环境中执行集成测试
  2. 测试后的后过程GC日志在堆中找到峰值(例如, gc之后的最大堆)。我可能会使用一些时髦的脚本来解析和进行统计。

随着时间的推移记录这些数字,以查看长期趋势是否显示出需要进行分析的令人惊讶的变化。

以前有人做过类似的事情吗?这是一个完全愚蠢的主意吗?有没有高级工具?

很可能您不会从普通CI测试中找到任何有用的东西。我们正在运行类似生产的(井,合理)的负载测试,并且在24小时以上的GC活动非常有用。有些事情只有一周或更长时间才能看到。您可能会在短短几个小时内发现一些趋势,但是典型的CI测试可能太短了。

如果您想走该路线,则当然可以使用GC日志,但是使用JOLOKIA/JMX或使用JSTAT工具获取JVM的数据要容易得多。将其发送到InfluxDB/Graphite/其他,并用Grafana或其他东西将其绘制。能够比较不同时期的GC图并与应用程序报告的其他事件相关!

尝试以下答案。

建议使用spf4j。

我想启动微服务之类的东西,以确保它能够从提供的内存限制 非常快的烟雾测试开始。

最新更新