Linux 问题排查
一、系统监控
1. 资源监控“三件套”
CPU
top -o %CPU # 实时按CPU占用排序
mpstat -P ALL 1 # 每核使用情况,每秒更新
💡 Tip: top
里按 1
可以显示每个CPU核心使用率。
内存
free -h # 总览内存和swap
vmstat 1 5 # 每秒采集5次,关注cs(上下文切换)、si/so(swap)
💡 Tip: vmstat
可快速发现内存瓶颈及swap使用情况。
磁盘
df -h # 磁盘空间使用
iostat -x 1 # IO性能,%util > 80% 需关注
💡 Tip: iostat -x 1
结合 iotop
可找出高IO进程。
2. 网络监控与分析
netstat -natp | grep <port> # 查看端口连接状态
ss -s # TCP连接汇总
iftop -P # 实时流量监控
tcpdump -i eth0 port 8080 -w traffic.pcap # 抓包分析
💡 Tip: ss -tanp
比 netstat
快,iftop
需要sudo权限。
二、日志分析技巧
1. 基础“三板斧”
grep -n "ERROR" app.log | tail -20 # 错误关键字
grep -A5 -B5 "Exception" app.log # 上下文查看
sed -n '/10:00/,/11:00/p' app.log # 按时间区间筛选
2. 高级统计
awk '/ERROR/{print $1}' app.log | sort | uniq -c | sort -nr # 错误次数统计
jq '.timestamp,.level,.message' app.json.log # JSON日志处理
💡 Tip: awk
+sort|uniq
是日志归类神器,jq
处理JSON日志非常方便。
三、性能优化清单
1. JVM 参数优化(JDK8)
-Xms4g -Xmx4g
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
💡 Tip: 使用G1GC可降低Full GC停顿,配合监控Young/Old区使用率。
2. JVM 关键指标监控
指标 | 正常范围 | 危险阈值 |
---|---|---|
Old区使用率 | <70% | >85% |
Young GC频率 | 5–30秒/次 | >1次/秒 |
Full GC频率 | <1次/天 | >1次/小时 |
3. 实战小技巧
- 结合
vmstat
,iostat
,top
三者找出瓶颈源头。 - 高CPU但低IO → CPU密集型问题;高IO但低CPU → IO瓶颈。
- 网络问题优先抓包分析,再用
ss
或netstat
确认连接状态。 - 日志分析先定位错误关键字,再统计频率,快速判断问题影响面。