Linux系统宕机原因排查指南
当Linux服务器意外宕机时,快速定位原因对恢复服务至关重要,以下是详细的排查方法,按优先级排序:
查看系统日志(关键入口)
系统日志是首要排查点,存储路径因发行版而异:
tail -n 100 /var/log/syslog # Ubuntu/Debian # 内核专属日志 grep -i "error\|panic\|oom\|segfault" /var/log/kern.log
重点关注:
kernel panic
:内核级致命错误Out of memory
(OOM):内存耗尽segfault
:应用程序内存越界- 硬件错误(如
I/O error
、CPU soft lockup
)
使用 dmesg
分析内核缓冲
内核环形缓冲区记录崩溃前的最后信息:
dmesg -T | tail -n 200 # -T 显示可读时间戳
典型场景:
- 硬件故障:
SMART failure
(硬盘)、EDAC MC Error
(内存) - 驱动问题:
NMI watchdog
、BUG: soft lockup
- 资源枯竭:
oom-killer
进程名
检查系统服务日志(systemd 环境)
使用 journalctl
查询服务崩溃记录:
journalctl -b -1 -p 3 # 查看上次启动(-b -1)的错误(priority 3以上) journalctl -k --since "2 hours ago" # 仅内核日志
分析内存转储文件(高级诊断)
若配置了 kdump,内存转储文件在 /var/crash/
目录:
crash /var/crash/vmcore /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
操作示例:
crash> bt # 查看崩溃时的调用栈 crash> ps # 显示崩溃瞬间的进程状态
⚠️ 前提条件:需提前配置kdump(官方配置指南)
硬件健康检查
- 硬盘状态:
smartctl -a /dev/sda | grep -e "Reallocated_Sector" -e "Pending_Sector"
- 内存测试:
memtester 1G 1 # 测试1GB内存(需安装memtester)
- 服务器硬件日志:
ipmitool sel list # 需硬件支持IPMI
资源使用回溯
通过 sar
(sysstat包)查看历史资源数据:
sar -r -u -q -f /var/log/sa/sa$(date +%d -d yesterday) # 查看昨日数据
关键指标:
%memused
>95% → 内存耗尽runq-sz
> CPU核心数 → CPU过载await
> 100ms → 磁盘I/O瓶颈
常见宕机原因速查表
现象 | 可能原因 | 验证命令 |
---|---|---|
系统无响应 | 内存耗尽/OOM | dmesg | grep -i oom |
强制重启 | 硬件故障(CPU/内存) | dmidecode -t memory |
内核崩溃 | 驱动或内核bug | modinfo 驱动名 |
文件系统只读 | 磁盘损坏 | smartctl -a /dev/sda |
SSH断开后无法连接 | 网络或高负载 | sar -n DEV 1 3 |
预防建议
- 监控配置:部署Prometheus+Alertmanager监控内存/磁盘/CPU阈值
- 内核调优:
echo "vm.panic_on_oom=0" >> /etc/sysctl.conf # 禁用OOM时panic echo "kernel.sysrq=1" >> /etc/sysctl.conf # 启用SysRq紧急调试
- 定期维护:
- 更新内核:
yum update kernel
/apt upgrade linux-image-generic
- 检查硬件:每月执行
smartctl
和memtester
- 更新内核:
引用说明:
- 内核文档:Kernel Crash Dump Guide
- 系统调试工具:sysstat、crash、ipmitool 官方手册
- 最佳实践参考:Red Hat Troubleshooting Guide
通过系统日志、硬件检查、资源分析三管齐下,90%的宕机原因可被快速定位,复杂场景建议结合crash
工具深度分析转储文件。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8740.html