我有一个运行httpd,mysql,memcached和postfix的Centos服务器。 通常,我的服务器负载正常
Usage: /usr/sbin/httpd [-D name] [-d directory] [-f file]
top - 07:43:55 up 9:38, 1 user, load average: 1.04, 1.08, 1.11
Tasks: 236 total, 1 running, 234 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.2%us, 1.0%sy, 0.0%ni, 93.6%id, 1.1%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 8015636k total, 5743920k used, 2271716k free, 254304k buffers
Swap: 8392696k total, 0k used, 8392696k free, 4224184k cached
但有时崩溃(httpd无效,无法将ssh连接到服务器),我需要让数据中心重新启动才能ssh。
重新连接到服务器后,我检查top命令,看到服务器负载平均值仍然很高(超过100),CPU(等待)超过70%,并且D中的httpd进程太多州。
现在我坚持这个问题。有人可以提供一些建议吗?
答案 0 :(得分:2)
该过程将被置于一种特殊的睡眠状态,称为“D”或“磁盘睡眠”。这是特殊的,因为在这种状态下不能杀死或中断该过程。这种状态很糟糕,因为你无法对D状态的进程做任何事情。如果发生这种情况,非常重要的是确定这个不幸的睡眠发生的位置。使用带有l选项的ps命令很容易。 WCHAN列显示进程处于休眠状态的内核函数的名称:
ps axl | awk'$ 10~ / D /'
与开发人员一起检查该功能