CentOS 监控 Java 应用性能
一 快速排障命令
二 启用 JMX 远程监控
三 指标化与可视化监控
四 关键指标与告警阈值
五 一键巡检脚本示例
#!/usr/bin/env bash
set -e
APP=$1
if [ -z "$APP" ]; then
echo "Usage: $0 <jar/pattern>"
exit 1
fi
PID=$(jps -l | grep -i "$APP" | awk '{print $1}' | head -n1)
if [ -z "$PID" ]; then
echo "Java process not found: $APP"
exit 2
fi
echo "=== Process: $PID ==="
ps -p $PID -o pid,ppid,cmd,%cpu,%mem,etime
echo -e "\n=== CPU/Memory (top) ==="
top -b -n 1 -p $PID | tail -n 1
echo -e "\n=== GC Utilization ==="
jstat -gcutil $PID 1 5
echo -e "\n=== Thread Count ==="
jstack $PID | grep -E '^\s*"' | wc -l
echo -e "\n=== Top 10 Threads (CPU) ==="
jstack $PID | grep -E '^\s*"' | sort -k2 -nr | head -10
echo -e "\n=== Deadlock Check ==="
jstack $PID | grep -A 30 "Found one Java-level deadlock" || echo "No deadlock found."