Я получил критическое предупреждение 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=1m process_control_timeout=10s
Это означает, что в таких случаях предполагается перезапуск php5-fpm, но этого не произошло !!
любая идея о том, что может заставить эти процессы перейти в состояние непрерывного сна и как избежать такого случая в будущем?
Спасибо за вашу помощь
Пока D в top
означает непрерывный сон, мне проще думать о D для Disk. Процесс ожидает, что ядро вернется к нему с чем-то, и в 95% случаев это чтение с диска.
Тот факт, что это непрерывный сон, является причиной того, что php-fpm не может перезапуститься.
Итак, в этом случае вы захотите проверить свои диски, сначала с помощью fsck -f /dev/mapper/VG-LV
в однопользовательском режиме (если это удаленный выделенный сервер или VPS, вам придется использовать для этого удаленную консоль KVM), затем прочитайте данные SMART с помощью smartctl -a /dev/sd?
(если они не находятся в аппаратном массиве RAID; если это аппаратный RAID, используйте инструмент, предоставленный поставщиком), чтобы проверить, может ли один из ваших дисков выйти из строя.