在Ubuntu上监控Java应用性能可使用以下工具和方法:
一、JDK自带工具
- jps:查看Java进程ID。
- jstat:实时监控堆内存、垃圾回收等指标,如
jstat -gcutil <pid> 5000 10(每5秒采样10次)。
- jmap:生成堆转储文件,用于分析内存泄漏,如
jmap -dump:format=b,file=heapdump.hprof <pid>。
- jstack:查看线程栈信息,定位死锁或线程阻塞问题。
- jconsole/VisualVM:图形化监控JVM性能,包括CPU、内存、线程等。
二、第三方工具
- Prometheus+Grafana:Prometheus采集指标,Grafana可视化,支持JMX Exporter导出JVM数据。
- Zabbix:企业级监控方案,支持Java进程状态、资源使用等监控。
- JProfiler/YourKit:商业级性能分析工具,提供深度内存和CPU分析。
三、脚本与日志
- 编写监控脚本:如用
top或jstat定期采集CPU/内存数据,通过邮件报警。
- 分析GC日志:添加JVM参数
-XX:+PrintGCDetails记录垃圾回收行为,辅助优化。
四、APM工具
- Pinpoint/Glowroot:针对分布式系统的APM工具,追踪请求链路和性能瓶颈。
操作建议:
- 基础监控用
jps、jstat、jvisualvm;
- 复杂场景用Prometheus+Grafana或Zabbix;
- 内存泄漏问题优先用
jmap+Eclipse MAT分析堆转储。