theme: default themeName: "默认主题" title: "服务器莫名重启怎么查?这套排查流程能揪出99%的元凶"
服务器莫名重启怎么查?这套排查流程能揪出99%的元凶
客户打电话来:"服务器昨天半夜自己重启了,业务中断了半小时,你们能查下原因吗?"
我问:"重启了几次?"
"一次。"
"那还好,至少不是反复重启。日志还在吗?"
"应该有吧,我没动。"
这种情况很常见。服务器异常重启,原因可能是硬件故障、内核panic、电源问题、人为误操作……排查思路要对,不然查半天啥也找不着。今天分享一套我总结的排查流程,绝大多数情况都能搞定。
第一步:确认重启时间和频率
首先搞清楚重启发生的时间点,排查才有方向。
# 查看系统启动时间
uptime
或者
who -b
或者
last reboot
last reboot命令会列出历史重启记录,能看到重启发生的时间。如果发现短时间内多次重启,说明问题比较严重。
确认时间后,就可以针对性查那个时间段的日志。
第二步:检查系统日志
这是最关键的一步。重启前后发生了什么,日志会告诉你。
# CentOS/RHEL
cat /var/log/messages grep -i "error\ fail\ panic\ restart"
Ubuntu/Debian
cat /var/log/syslog grep -i "error\ fail\ panic\ restart"
查看内核日志
dmesg -T tail -500
重点关注几个关键词:
Kernel panic如果看到"Kernel panic"字样,说明内核崩溃了。通常会附带堆栈信息,能看到是哪个驱动或模块导致的。常见原因:
- 驱动bug
- 内存损坏
- 文件系统损坏
如果看到"Out of memory"或"Kill process",说明内存不足,系统触发OOM killer杀进程。严重时会直接重启。
解决方法:
# 查看OOM记录
grep -i "out of memory\ oom" /var/log/messages
或者查看dmesg
dmesg grep -i oom
如果是OOM,需要增加内存或优化应用内存占用。
Hardware Error如果看到"MCE"(Machine Check Exception)或"ECC"相关错误,多半是硬件问题。
第三步:检查硬件状态
硬件故障是异常重启的常见原因,尤其是老旧服务器。
# 检查内存错误(需要安装edac-utils)
edac-util -v
查看硬件日志(如果安装了ipmitool)
ipmitool sel list tail -100
检查硬盘SMART信息
smartctl -a /dev/sda
ipmitool是个好东西,能查看BMC记录的硬件事件,包括温度报警、风扇故障、电源异常等。如果服务器有带外管理,这个必查。
第四步:检查电源和环境
机房环境也可能导致重启:
- 空调故障导致温度过高
- 市电波动或断电后UPS切换
- 电源模块故障
# 查看温度传感器数据(如果有)
sensors
或者通过ipmitool
ipmitool sdr type temperature
如果发现温度异常,联系机房检查空调。
第五步:检查是否人为操作
有时候重启是人干的,只是当事人忘了或者不好意思承认。
# 查看登录历史
last head -20
查看sudo记录
grep sudo /var/log/secure tail -50
查看是否有reboot命令执行历史
history grep reboot
如果重启时间点有人登录并执行了reboot命令,那就破案了。
第六步:检查计划任务
有时候重启是计划任务触发的,比如自动更新。
# 检查cron任务
crontab -l cat /etc/crontab ls -la /etc/cron.d/
检查是否配置了自动更新
CentOS
cat /etc/yum/yum-cron.conf
Ubuntu
cat /etc/apt/apt.conf.d/50unattended-upgrades
有些系统配置了自动更新内核并重启,可能在你不知情的情况下触发。
第七步:检查应用层面
某些应用有自带的"重启"机制,比如:
- Java应用的-XX:+HeapDumpOnOutOfMemoryError参数可能导致进程被杀
- 某些服务配置了崩溃后自动重启
- Supervisor、systemd等进程管理工具可能触发重启
# 检查systemd服务重启记录
systemctl status 你的服务名 grep -i restart
检查应用日志
位置因应用而异,常见的有:
/var/log/tomcat/catalina.out /var/log/nginx/error.log
实战案例:内存条故障导致反复重启
之前处理过一个案例,服务器每隔几天就重启一次。查日志发现每次都有MCE硬件错误,报的是内存通道异常。
用ipmitool定位到具体是哪根内存条,联系厂商更换后问题解决。
这类问题软件层面查不出根因,必须看硬件日志。所以带外管理是运维的必备技能。
预防措施
排查完问题,还得做好预防:
1. 监控告警部署监控系统,对内存、温度、硬件状态做告警。异常重启前往往有征兆。
2. 日志持久化日志存本地,重启可能丢失。建议把关键日志实时推送到日志服务器或云端。
3. 定期巡检定期检查硬件状态、SMART信息、系统日志,把问题消灭在萌芽状态。
看完还有什么疑问吗?
如果文章没有覆盖到你的情况,欢迎联系我们咨询——免费解答,说清楚再决定要不要服务。
📞 服务热线:13708730161 💬 微信:eyc1689 📧 邮箱:service@eycit.com 🌐 https://www.eycit.com
易云城IT服务,您身边的IT专家。