#=== 第1步:快速判断系统整体状态(30秒)===
$ uptime
10:23:45 up 127 days, load average: 16.34, 8.21, 4.15
# 解读:Load=16.34,假设16核CPU,负载率=16.34/16=102%,刚超载
$ free -h
total used free buff/cache available
Mem: 31Gi 29Gi 512Mi 1.2Gi 600MiSwap: 2.0Gi 1.5Gi 512Mi
# 解读:available只剩600MB,swap已用1.5GB,内存严重不足!
# === 第2步:确认CPU状态(1分钟)===
$ top -c -b -n 1 | head -20
top - 10:25:30 up 127 days, load average: 16.34, 8.21, 4.15
Tasks: 218 total, 8 running, 210 sleeping, 0 stopped, 0 zombie
%Cpu(s): 85.2 us, 12.3 sy, 0.0 ni, 0.0 id, 2.5 wa, 0.0 hi, 0.0 si, 0.0 st
# 解读:用户态CPU 85.2%,系统态12.3%,空闲0%,wa=2.5%说明有IO等待
# === 第3步:找出CPU/内存大户(1分钟)===
$ ps aux --sort=-%cpu | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
java 6789 78.2 7.5 8765432 987654 ? Sl Apr25 567:89 java -jar app.jar
# 解读:java进程PID=6789,吃掉78.2%的CPU和7.5%的内存
# === 第4步:确认磁盘状态(1分钟)===
$ df -h | grep -E '([8-9][0-9]|100)%'
/dev/sda1 500G 450G 50G 90% /
# 解读:根分区使用率90%,需要清理
$ iostat -x 1 3 | grep -A1 Device
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await %util
sda 0.00 15.00 50.00 100.00 2.00 0.50 40.00 3.50 23.33 75.50
# 解读:%util=75.5%,磁盘接近饱和,await=23ms偏高
# === 第5步:确认网络状态(1分钟)===
$ ss -s
TCP: 18456 (estab 12345, closed 5678, timewait 4567/0)
# 解读:连接数正常,TIME_WAIT=4567正常范围
# === 第6步:综合判断 ===
# 问题定位:
# 1. 内存不足:available=600MB,swap用了1.5GB
# 2. java进程异常:PID=6789,CPU 78.2%,可能是内存泄漏导致频繁GC
# 3. 磁盘压力大:%util=75.5%,可能是swap写入导致
# 排查建议:
# 1. 先用 jstat -gc 6789 看java的GC情况
# 2. 用 jmap -histo:live 6789 看对象分布
# 3. 临时扩容swap或重启java进程
# 4. 长期方案:增加内存或优化java程序