在Ubuntu系统中,可通过以下方式监控Java应用:
一、JDK自带工具
- 命令行工具:
jps
:查看Java进程ID及主类信息。
jstat
:监控堆内存、垃圾回收等指标,如jstat -gcutil <pid> 1000
(每秒刷新一次)。
jstack
:获取线程堆栈信息,用于分析死锁或线程状态。
jmap
:生成堆转储文件,辅助内存泄漏分析。
- 图形化工具:
- JConsole:监控JVM内存、线程、CPU等,支持远程连接(需配置JMX参数)。
- VisualVM:扩展JConsole功能,提供更深入的性能分析(如堆转储分析)。
二、第三方工具
- Prometheus + Grafana:
- 通过JMX Exporter采集JVM指标,结合Grafana实现可视化监控与告警。
- Zabbix/MoSKito:支持企业级监控,可监控应用状态、性能指标及告警。
- jtop:轻量级命令行工具,实时显示CPU、内存、线程等数据。
三、系统级监控
- top/htop:查看Java进程的CPU、内存占用情况,支持实时过滤。
- ps:结合
grep
筛选Java进程,获取PID及运行参数。
四、日志与调优
- GC日志:通过JVM参数
-XX:+PrintGCDetails
记录垃圾回收行为,辅助分析性能瓶颈。
- APM工具:如Elastic APM,可监控应用性能并定位慢请求。
根据需求选择工具:简单监控可用top
+JDK命令行;复杂场景推荐Prometheus+Grafana或VisualVM。