近日在服务器发布docker容器的时候出现了无法发部的问题,分析可能是由于僵尸进程导致的问题。
1.使用top查看服务器僵尸进程
top
2.发现的32个僵尸进程,不少啊,那我们在来查询下这些僵尸进程是什么程序导致的。
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
3.我们发现貌似都是一个父进程下的好多子进程变成了僵尸。好,我们来干掉僵尸。
注意:需要kill掉父进程的进程号。
kill -9 5948
4.再次查看是否已经干掉
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
由于本例子是都是一个父进程下的好多子进程变成了僵尸,所以只需一个Kill即可,若实际项目中出现多个父进程ID的情况呢。一个一个kill是不是有点麻烦??
好我们来提供给一个可以直接干掉多个僵尸进程的语句。
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
这样就可以自己处理多个进程的情况的僵尸进程了。
所有僵尸进程都干掉后,容器已经可以启动并正常发布了,问题解决!!