Linux服务器Java应用监控指南
Linux自带的命令行工具是监控Java应用的基础,适合快速查看进程状态、资源占用等场景:
ps -ef | grep java或jps(JDK自带)列出所有Java进程,jps -v可显示详细参数(如主类、JVM参数)。top(按Shift+M按内存排序)、htop(更直观的交互界面)可实时查看CPU、内存占用;jstat(JDK自带)用于监控GC情况,例如jstat -gc <PID> 1000每秒输出一次堆内存、GC次数及耗时。jstack <PID> > thread_dump.txt导出线程堆栈,用于分析死锁、线程阻塞(如大量线程处于WAITING状态);jmap -dump:format=b,file=heapdump.hprof <PID>生成堆转储文件,配合MAT(Eclipse Memory Analyzer)可分析内存泄漏(如大对象占用过多堆空间)。图形化工具提供更友好的界面,适合日常监控与问题诊断:
jps、jstat、jstack等功能,支持实时查看CPU、内存、线程、类加载情况,还能生成堆转储、线程Dump;适合本地或远程监控(需开启JMX)。-XX:+FlightRecorder),可记录JVM运行时事件(如GC、方法调用、线程状态);JMC用于分析JFR数据,提供可视化报表(如GC趋势、方法热点),适合生产环境长期监控。JMX(Java Management Extensions)是Java标准的监控与管理技术,支持远程监控JVM和应用指标:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false(生产环境建议开启认证与SSL)。服务器IP:9090即可连接,查看MBean(如java.lang:type=Memory内存指标、java.lang:type=Threading线程指标)的实时数据。APM工具提供从应用到基础设施的全链路监控,适合生产环境深入分析性能瓶颈:
日志是监控的重要补充,通过分析日志可快速定位问题根源:
tail -n 100 /path/to/app.log | grep "ERROR"查看最近100行错误日志;结合ELK(Elasticsearch+Logstash+Kibana)或Loki+Grafana实现日志集中存储、检索与可视化(如统计错误日志数量趋势)。#!/bin/bash
THRESHOLD=80
EMAIL="admin@example.com"
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "当前CPU使用率:${CPU_USAGE}%,超过阈值${THRESHOLD}%" | mail -s "CPU使用率告警" $EMAIL
fi
-Dcom.sun.management.jmxremote.authenticate=true)与SSL(-Dcom.sun.management.jmxremote.ssl=true),避免未授权访问。jstack),推荐使用JFR(低开销)或APM工具(采样分析)。