V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
wocanmei
V2EX  ›  分享创造

给你的 jvm gc 日志做个 CT 扫描吧

  •  1
     
  •   wocanmei ·
    naosense · 2020-02-02 11:20:37 +08:00 · 1477 次点击
    这是一个创建于 1545 天前的主题,其中的信息可能已经有所发展或是发生改变。

    疫情肆虐,在家憋的无聊,撸了个 jvm 垃圾收集日志排查小助手gcct,取 gc 的 ct 之意。作为 java 狗,一直以来深受排查 gc 日志之苦,冗长的 gc 日志往往让人难以适从,只能肉眼扫描,年纪轻轻就患上了老花眼。基于此写了这个小程序,可以从总体上观察一下垃圾收集行为,再按图索骥重点排查,暂时只支持 cms 和 g1。

    先来个栗子,

    all

    左边( page 1 )从上到下依次是:

    • 内存按 jvm 启动时间的变化图,类似 Visual VM 的内存图,可以看到上面的垃圾收集是有问题的,典型的垃圾收集中新生代( young )会有规律的增大降低,朝生息死嘛,而上图中从 5s 开始,新生代不再变化。
    • gc 各种行为执行时间按 jvm 启动时间的变化图,即日志中的各种 duration。有两个坐标轴,左边的是实际时间,右边的是标准化的时间(x -mean) / sd。这样做的目的是找出异常值,根据统计理论,统计值超出平均值三个标准差为小概率事件,当然前提是服从正态分布。
    • 标准化后的 gc 行为时间分布图,看看是不是服从正态分布。
    • 虚拟机的版本和 jdk 的版本。
    • 内存信息。
    • jvm 的参数。

    右边( page 2 )是 gc 行为的详细信息统计,比如各种行为执行的次数,执行时间的最长时间、最小时间、平均时间等等,还可以看看是否有异常行为,比如Concurrent Mode Failure,这通常意味着 jvm 的新生代内存分配不合理。

    有时候,日志太多,你想重点观察某一时间段,可以设置起始时间,比如你想观察 0-5s 这段时间,

    0-5

    暂时就这些功能,期待老铁们的反馈。

    xiaoyanbot
        1
    xiaoyanbot  
       2020-02-05 22:23:58 +08:00
    很赞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2797 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 272ms · UTC 02:44 · PVG 10:44 · LAX 19:44 · JFK 22:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.