Java 在 CentOS 上的性能监控实践
一 系统级监控
二 JVM 内置与命令行工具
三 远程可视化与 APM
四 快速上手命令清单
五 关键指标与告警建议
| 维度 | 关键指标 | 常用工具 | 典型阈值或动作 |
|---|---|---|---|
| 系统 | CPU 使用率、Load 平均 | top、dstat、nmon | Load 持续高于 CPU 核数 或 CPU > 80% 持续 5 分钟,优先排查热点线程与 GC |
| 内存 | 物理内存使用率、Swap 使用 | top、dstat | 接近物理内存上限或频繁 Swap,检查堆大小与对象增长 |
| 磁盘 I/O | await、r/s、w/s | dstat、nmon | await 明显升高或 IOPS 打满,优化 SQL/缓存/存储 |
| 网络 | 带宽占用、丢包/重传 | nmon、sar | 带宽接近上限或重传率高,排查下游依赖与协议效率 |
| JVM 堆 | Heap 使用率、Eden/Survivor/Old | jstat -gcutil | Old 使用率高且 FGC 频繁,考虑增大堆或优化对象生命周期 |
| GC 行为 | YGC/YGCT、FGC/FGCT、GC 停顿 | jstat -gcutil、GC 日志 | FGC 次数/停顿 突增,结合堆转储与代码路径分析 |
| 线程 | 线程总数、BLOCKED/DEADLOCK | jstack | BLOCKED 线程多或发现死锁,优化锁粒度与并发控制 |
| 元空间 | Metaspace 使用 | jstat -gc、jmap -heap | Metaspace 持续增长,检查类加载泄漏(如动态生成类) |
| 应用 | HTTP 99/95 线延迟、吞吐、错误率 | APM、Micrometer/Prometheus | P99 持续升高或错误率上升,联动追踪与日志定位 |