我怀疑我的舞台服务器上,每当我运行ps aux,它会卡住。 它输出一个进程列表并停止响应。 我检查有足够的RAM(1GB)。
当我运行最高命令时,对我来说看起来不错,但是我想知道有一个僵尸进程。 那是什么? 任何人都可以解释
top - 11:00:29 up 3:53, 2 users, load average: 51.75, 50.52, 45.38 Tasks: 79 total, 1 running, 77 sleeping, 0 stopped, 1 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1747660k total, 603572k used, 1144088k free, 12644k buffers Swap: 917496k total, 0k used, 917496k free, 97732k cached
谢谢
如果在Linux上,在ps上运行strace来查看它调用的系统调用,并且您可能会看到它挂在哪个系统上:
$ strace ps aux
如果你使用的是不同的Unix-y系统,你可以使用truss或dtruss 。
考虑到你有超过50的负载,但CPU是100%空闲,我会看看I / O。 这看起来好像计算机正在等待磁盘或networking返回数据,然后才能继续。
尝试使用iotop看看是什么阻止了这一点。 这可能是一个驱动器的出路。
类似的行为也可能是您的计算机configuration为对外部资源执行名称/组parsing和身份validation,并且该资源不可用。 在这种情况下,这将有助于检查您的PAMconfiguration和任何相关的服务,如DNS,LDAP,NIS。
维基百科很详细地解释它。
呃…你的平均负载正在显示一些东西是真的吃I / O或CPU。 你的硬盘坏了吗? 它对此反应迟钝吗? 51的平均负荷并不是那么正常。
僵尸 – 如果一个进程从另一个进程产生并结束,它应该被父进程重新获得。 如果父母崩溃或消失,孤儿过程变成僵尸。 它本质上是任务表中不占用资源或做任何事情的一个过程,但现在init过程必须处理它。 如果不重新启动,确实无法清除它们,但通常不会造成任何伤害。 现在,如果你有很多的僵尸,你有一个问题, 一个错误,一个资源问题的过程,东西不能正常运行。 不过,一两个僵尸并不是罗梅罗的电影。
澄清 – 我使用孤儿这个词,但迂腐的一面会指出,孤儿过程和僵尸之间是有区别的。 孤儿仍然在运行,而僵尸什么都不做,它不会占用进程表条目以外的资源。 而我不确定初始化僵尸进程。 我可能是错的(初始化应该照顾孤儿进程)。 无论哪种方式,除非你有很多僵尸出现,一个或两个系统通常不是一个问题。
哇,从最高的输出,你的负载是可笑的高。 除非你有一个50+的CPU系统,那太高了。 CPU虽然没有做任何事情:
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
这听起来像你有一个硬件问题。 dmesg的输出告诉你什么?
ps aux输出一次进程列表并退出。 它不像top一样定期更新。
“僵尸”进程是一个完成执行的进程,但在进程表中仍然有一个入口。 该条目仍然需要允许启动(现在是僵尸)进程的进程读取其退出状态。