2012-06-20 2 views
1

я получил Nagios критического предупреждения о сервере, и когда я проверил ps -aux я обнаружил, что все Nginx (PHP-футы в минуте) в Бесперебойном сне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. и, наконец, я перезапускаю сервер, чтобы исправить проблему! и сегодня проблема повторилась и мне удалось перезапустить php5-FPM, который снижает нагрузку на сервер от 300 до 1.xx
хотя у меня есть это в /etc/php5/fpm/php.ini

emergency_restart_threshold=10 
emergency_restart_interval=1m 
process_control_timeout=10s 

который означает, что php5-fpm предполагается перезапустить в таких случаях, но это не так!
любая идея о том, что может привести к тому, что эти процессы перейдут в состояние бесперебойного сна и как избежать такого случая в будущем?

+0

Собственно, загрузка сервера 300 не является нормальной. Я думаю, что это основная причина, почему ваши php-fpm-процессы работали неправильно. Вы видели журнал ошибок php-fpm? Попробуйте включить режим отладки для всех пулов php-fpm –

+0

, как я упомянул ,,, php5-fpm вызывал эту нагрузку. он стал меньше 2 после перезапуска php5-fpm. – Alaa

+0

Возможно, что некоторый php-модуль поддерживает весь php-fpm-ребенок. У вас есть нестандартные php-модули? Где вы получили php-fpm (из пакета rpm или скомпилированы из источника)? Попытайтесь получить исходный код и скомпилировать php для собственных нужд. –

ответ

1

Бесперебойный сон переводит на I/O. Процесс в этом состоянии не обрабатывает сигналы. Таким образом, PHP-FPM не может перезапустить процесс, находящийся в этом состоянии.

У вас, вероятно, есть плохой жесткий диск, устаревшее/мертвое сетевое крепление (nfs, cifs?), Скрипты PHP пытаются получить доступ, или действительно плохой случай конкуренции ввода-вывода.

Кроме того, это не относится к .

+0

Вы имеете в виду, что emergency_restart_threshold = 10, emergency_restart_interval = 1m и process_control_timeout = 10s не будет работать для процессов D – Alaa

+0

Да. Это называется _uninterruptible_ sleep по какой-то причине. ;-) См. Также: http://en.wikipedia.org/wiki/Sleep_%28operating_system%29#Uninterruptible_sleep – Gnarfoz

Смежные вопросы