概述
记录一个Docker服务被异常终止问题的排查流程。
排查过程
1. 在问题发生前……
在服务器盲测时发现了一个问题,有服务器重启后ssh服务没有正常启动导致服务器无法登录,排查发现是由于systemd版本太低存在Bug,sshd服务在network服务启动完成之前就开始启动,导致无法绑定内网IP,sshd服务启动失败。
为了修复这一问题,SA同学操作升级了一批主机的systemd版本。
2. Docker挂掉了!
有同学反馈,有一批服务器上的Docker服务在凌晨2点左右的时候挂掉了,感觉问题很严重,SA赶紧介入排查。
2点这个时间看起来比较特殊,是不是有啥定时任务?
这类问题排查顺序:看系统messages、看用户操作日志、看crontab执行日志。果然发现了一个定时任务:
0 2 * * * root python /home/xxx/logrotate.py > /dev/null
Emmmmmm…… 看起来是个日志轮转脚本,打开脚本看一看,里头有这么一行:
/bin/docker exec nginx001 cat /var/run/nginx.pid | xargs /bin/docker exec nginx001 /bin/kill -USR1
意思就是日志轮转完后让nginx重新打开日志文件。那么执行docker exec以后,docker就挂掉啦?匪夷所思。
3. 是systemd的锅?
排查看起来陷入了瓶颈,执行docker exec就会导