gceasy可在线解析jvm gc日志并生成可视化报告,需用-xx:+printgcdetails等参数生成标准日志,上传后重点关注health score、gc停顿、老年代趋势及优化建议,结合jstat/jmap等工具交叉验证。

搭建 JVM GC 日志监控平台,核心是“采集 → 解析 → 可视化 → 告警”四步闭环。不依赖复杂中间件也能快速落地,重点在于日志规范、工具选型和关键指标聚焦。
一、必须开启的 GC 日志参数
日志是所有后续分析的基础,生产环境上线前务必统一配置:
-
JDK 8 及以前:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/logs/gc-%p.log -
JDK 11+(推荐):
-Xlog:gc*:file=/logs/gc-%p.log:time,tags,level:filecount=5,filesize=10M - 附加保障项(防OOM失察):
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/heap- - 配合
logrotate按天切割、单文件限 10MB,避免磁盘打满
二、日志解析与可视化工具选型
不建议从零开发解析器,优先用成熟、轻量、可本地部署的工具:
- GCeasy:完全在线,上传 zip 包(含 gc.log)即可生成图表+诊断建议,适合快速排查;
-
GCPlot:支持 Docker 一键部署(
docker run -d -p 80:80 gcplot/gcplot),UI 清晰、支持多日志对比,适合团队共享; - GcViewer:开源免费,桌面端运行,支持折线图缩放与导出,适合日常调试;
- 进阶选型:如已接入 Prometheus + Grafana,可用
jvm_gc_collection_seconds_count等 Micrometer 暴露指标做实时趋势监控。
三、远程 JVM 实时监控补充(非日志但强相关)
GC 日志反映历史行为,JMX/jstatd 提供实时状态,二者结合才完整:
- 启动 Java 进程时加 JMX 参数(注意绑定真实 IP,禁用认证仅限内网):
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=30010 -Djava.rmi.server.hostname=172.16.1.206 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false - 服务端启动
jstatd(需配jstatd.all.policy授权tools.jar):./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=172.16.1.206 -p 2030 - 客户端用 VisualVM 或 JConsole 连接
service:jmx:rmi:///jndi/rmi://172.16.1.206:30010/jmxrmi,查看堆使用、GC 频次、线程数等动态指标
四、关键指标盯什么,怎么设告警
不是数据越多越好,抓住三个能预判问题的信号:
- Full GC 频率:1 小时内 ≥ 3 次,大概率存在内存泄漏或老年代过小;
- Young GC 耗时:单次 > 100ms 或每秒 ≥ 2 次,说明 Eden 区太小或对象晋升过快;
-
GC 吞吐量(
1 - GCT / 运行总时间):低于 95% 就该介入,低于 90% 往往已影响业务响应。
告警建议用 Zabbix 或 Prometheus Alertmanager,阈值按应用实际压测结果设定,避免一刀切。











