以下是CentOS下Java应用性能监控的常用方法及工具:
一、JDK自带工具
- jstat:监控JVM内存、GC、类加载等指标,如
jstat -gcutil(每5秒采样10次内存使用率)。5 10 - jstack:查看线程堆栈,分析死锁或线程阻塞问题,如
jstack。 - jmap:生成堆内存快照,用于内存泄漏分析,如
jmap -dump:format=b,file=heap.hprof。 - JConsole/VisualVM:图形化界面监控内存、CPU、线程等,支持远程连接(需开启JMX)。
二、开源监控工具
- Prometheus+JMX Exporter:通过JMX Exporter采集JVM指标,Prometheus存储并可视化,适合容器化环境。
- MyPerf4J:高性能无侵入监控,支持响应时间、吞吐量等指标,可集成到Spring Boot。
- Grafana:搭配Prometheus展示监控数据,支持自定义仪表盘。
- SkyWalking/Glowroot:分布式系统监控,支持链路追踪和性能分析。
三、系统级监控
- top/htop:查看系统资源占用(CPU、内存、进程状态)。
- vmstat/sar:监控系统虚拟内存、CPU活动。
- Nmon:综合监控CPU、内存、磁盘、网络等资源。
四、日志分析
- ELK Stack(Elasticsearch+Logstash+Kibana):集中存储、搜索和分析Java应用日志。
- Splunk:商业级日志分析工具,支持实时监控和可视化。
五、关键指标
- CPU:应用线程占用率,排查高负载代码。
- 内存:堆内存使用率、GC频率及耗时,判断内存泄漏或配置不合理。
- 线程:活跃线程数、死锁检测,优化多线程性能。
- 响应时间:接口或方法执行耗时,定位性能瓶颈。
六、自动化与调优
- 定时任务:通过
crontab定期检测进程存活或执行监控脚本。 - JVM调优:根据监控结果调整堆内存(
-Xms/-Xmx)、垃圾回收器(如G1 GC)等参数。
以上工具和方法可组合使用,根据应用场景选择合适方案,例如开发环境用VisualVM,生产环境用Prometheus+Grafana+MyPerf4J[1,2,3,4,5,6,7,8,9,10]。