我得到了关于服务器的nagios严重警告,当我检查ps -aux发现所有的nginx(php-fpm)都在不间断的睡眠中
www-data 1330 0.4 0.3 299992 108560? D 16:06 0:16 php-fpm:pool www www-data 1338 0.4 0.2 254728 92728? D 16:06 0:16 php-fpm:pool www www-data 1346 0.4 0.3 293544 100272? D 16:06 0:17 php-fpm:pool www www-data 1356 0.7 0.3 302504 101532? D 16:06 0:29 php-fpm:pool www www-data 1357 0.3 0.2 270672 85952? D 16:06 0:13 php-fpm:pool www ....
我被卡住了,甚至无法重新启动nginx。 最后我重新启动服务器来解决问题!
虽然我在/etc/php5/fpm/php.ini中有这个
emergency_restart_threshold = 10 emergency_restart_interval =1米 process_control_timeout = 10S
这意味着php5-fpm应该在这种情况下重新启动,但它没有!
什么可能导致这些进程进入不间断睡眠状态,以及将来如何避免这种情况?
谢谢你的帮助
虽然D在top意味着不间断的睡眠,但我觉得只是想到D为磁盘更容易。 这个进程正在等待内核回来,有95%的时间是从磁盘读取的。
不间断睡眠这个事实是为什么php-fpm无法重新启动。
因此,在这种情况下,您需要检查磁盘,首先在单用户模式下使用fsck -f /dev/mapper/VG-LV (如果是远程专用服务器或VPS,则必须使用远程KVM控制台为此),然后用smartctl -a /dev/sd?读取SMART数据smartctl -a /dev/sd? (如果它们不在硬件RAIDarrays中;如果它是硬件RAID,请使用供应商提供的工具)查看您的某个磁盘是否可能坏了。