爱意满满的作品展示区。
wocanmei

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

  •  1
     
  •   wocanmei ·
    naosense · Feb 2, 2020 · 1993 views
    This topic created in 2329 days ago, the information mentioned may be changed or developed.

    疫情肆虐,在家憋的无聊,撸了个 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  
       Feb 5, 2020
    很赞
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   938 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:03 · PVG 07:03 · LAX 16:03 · JFK 19:03
    ♥ Do have faith in what you're doing.