服务器卡顿死机排查:CPU内存磁盘故障定位方法
1. 初步观察与信息收集
当服务器出现卡顿或死机时,首先通过远程管理卡(如iLO、iDRAC)或本地控制台查看系统状态。记录错误日志、系统负载、进程状态等关键信息。
2. CPU故障排查
2.1 症状
- 系统响应缓慢,CPU使用率持续100%
- 进程卡死或大量僵尸进程
- 系统日志中出现“soft lockup”或“hard lockup”错误
2.2 排查步骤
- 使用
top或htop查看CPU使用率,按CPU占用排序进程。 - 使用
ps aux --sort=-%cpu列出占用CPU最多的进程。 - 检查是否存在异常进程(如挖矿程序),使用
kill终止。 - 使用
strace -p跟踪进程系统调用,分析卡住原因。 - 查看
/var/log/messages或dmesg中的CPU相关错误。 - 若怀疑硬件故障,运行
mcelog(如果支持)或检查BIOS日志。
3. 内存故障排查
3.1 症状
- 系统频繁使用交换分区(swap),内存使用率接近100%
- OOM Killer日志,进程被杀死
- 系统响应慢,内存错误(如ECC错误)
3.2 排查步骤
- 使用
free -h查看内存总量、已用、可用及swap使用情况。 - 使用
vmstat 1 5观察内存页交换(si/so)是否频繁。 - 使用
top按内存占用排序(按M键),找出内存消耗大的进程。 - 使用
smem或ps_mem更精确地查看进程内存占用。 - 检查
/var/log/messages中是否有OOM Killer记录。 - 运行
memtester或memtest86+进行内存硬件检测(需重启)。
4. 磁盘故障排查
4.1 症状
- 磁盘I/O等待高(iowait),系统响应慢
- 磁盘读写错误,文件系统损坏
- 磁盘空间不足
4.2 排查步骤
- 使用
df -h检查磁盘空间使用率。 - 使用
iostat -x 1查看磁盘I/O统计,关注%util、await等指标。 - 使用
iotop或pidstat -d找出I/O密集的进程。 - 使用
dmesg | grep -i error检查磁盘硬件错误。 - 使用
smartctl -a /dev/sda检查S.M.A.R.T.状态。 - 如果怀疑文件系统问题,使用
fsck进行修复(需卸载分区)。
5. 综合排查工具
sar:历史性能数据收集,可回放CPU、内存、磁盘等使用情况。perf:性能分析工具,用于CPU、内存、系统调用等。strace/ltrace:跟踪系统调用和库调用。netstat/ss:检查网络连接状态,排除网络问题。
6. 故障定位总结
| 资源 | 主要工具 | 关键指标 |
|---|---|---|
| CPU | top, htop, ps, strace, mcelog | %CPU, load average, soft lockup |
| 内存 | free, vmstat, top, smem, memtester | 内存使用率, swap使用, OOM |
| 磁盘 | iostat, iotop, df, smartctl, fsck | %util, await, 空间使用率, 错误日志 |
建议定期进行健康检查,并配置监控告警(如Nagios、Zabbix)以提前发现潜在问题。