- 论坛徽章:
- 0
|
我们有台机器装的是 ubuntu 9.1 server/linux-2.6.31_x64
上面跑 php-cgi,某些情况会有有进程状态变成 zombie 并永不消失,在控制台无论如何也杀不死,
此外像 w, lsof, ps, top, ls /proc/$pid 等凡是会试图读取该进程信息的命令将全部卡死, 这也导致
ssh 无法连接。连控制台输入 reboot 也不行,只有按电源重启。
有没有人了解或也碰到过类似的情况?
其实一出问题 ssh 就连不上,前几天为解决这个情况临时开启了 telnet 服务,telnet 登入后其实也
是卡屏(跟 w类似),不过按一下 ctrl-c 就回到 shell了,但 ssh 就永远卡那儿了。
我试图用 strace 追踪 w 指令,发现它在读取这个僵尸进程的信息时无限阻塞了,摘录如下,
/proc/$pid/cmdline 本来是相当于一个指向执行文件的软链,但这个古怪的僵尸在读取时卡了。
open("/proc/13858/cmdline", O_RDONLY) = 4
read(4, "/home/soft/php53/bin/php-cgi\0", 2047) = 29
close(4) = 0
stat("/proc/14317", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/14317/stat", O_RDONLY) = 4
read(4, "14317 (php-cgi) Z 1 18476 18476 "..., 1023) = 184
close(4) = 0
open("/proc/14317/cmdline", O_RDONLY) = 4
read(4, "", 2047) = 0
close(4) = 0
stat("/proc/14954", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/14954/stat", O_RDONLY) = 4
read(4, "14954 (php-cgi) D 1 18476 18476 "..., 1023) = 259
close(4) = 0
open("/proc/14954/cmdline", O_RDONLY) = 4
read(4,
^C <unfinished ...>
从上面记录看到 14954 就是那只不死神尸! |
|