2014-12-09 2 views
2

При работе над обновлением до PHP 5.5 у меня возникла проблема с php-fpm.Процессы PHP-FPM застряли от внезапного

Я создал новый веб-узел с новой версией PHP, и я подписываю его на балансировщике нагрузки, чтобы проверить его в prod. Все работает нормально до тех пор, пока не начнется много процессов php-fpm (через ~ 1 час). В дальнейшем я получаю таймауты.

Я изменил дистрибутив с Debian на Ubuntu и обновился до PHP 5.5. Кроме того, новый сервер такой же, как и раньше (когда все работает/работает).

Я попытался подписаться на два новых веб-узла, и они будут застревать одновременно. Я думаю, что это может быть связано с внезапными медленными ответами из базы данных (поскольку это единственное, что они разделяют).

Однако, я бы хотел, чтобы php-fpm не разбился, поэтому он будет работать, когда база данных будет в порядке.

Чтобы исправить это, я могу перезапустить службу php-fpm, но это не прочный план.

ps aux | grep php показывает мне:

root  13919 0.0 0.4 423472 19736 ?  Ss Dec08 0:10 php-fpm: master process (/etc/php5/fpm/php-fpm.conf) 
www-data 14087 0.0 3.1 474972 127284 ?  S Dec08 0:54 php-fpm: pool www 
www-data 14088 0.0 2.3 446944 94956 ?  S Dec08 0:50 php-fpm: pool www 
www-data 14089 0.1 2.2 443816 92644 ?  S Dec08 1:03 php-fpm: pool www 
www-data 14090 0.0 3.0 474208 124716 ?  S Dec08 0:44 php-fpm: pool www 
www-data 14092 0.0 3.1 478284 129060 ?  S Dec08 0:41 php-fpm: pool www 
www-data 14099 0.0 2.5 459700 105224 ?  S Dec08 0:14 php-fpm: pool www 
www-data 14111 0.0 2.0 439876 84952 ?  S Dec08 0:06 php-fpm: pool www 
www-data 14114 0.0 0.4 427220 18472 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14115 0.0 0.4 427220 18380 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14116 0.0 0.4 427184 18936 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14117 0.0 0.4 427204 18904 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14118 0.0 0.4 427220 18372 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14119 0.0 0.4 427184 18832 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14120 0.0 0.4 427188 18960 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14121 0.0 0.4 427220 18384 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14122 0.0 0.4 427200 18932 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14123 0.0 0.4 427236 18488 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14124 0.0 0.4 427220 18392 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14125 0.0 0.4 427220 18384 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14126 0.0 0.4 427204 18820 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14127 0.0 0.4 427220 18484 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14128 0.0 0.4 427204 18920 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14129 0.0 0.4 427188 18904 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14130 0.0 0.4 427220 18372 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14131 0.0 0.4 427188 18920 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14132 0.0 0.4 427220 18372 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14133 0.0 0.4 427204 18936 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14134 0.0 0.4 427220 18388 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14135 0.0 0.4 427220 18368 ?  S Dec08 0:00 php-fpm: pool www 
www-data 14136 0.0 0.4 427184 18936 ?  S Dec08 0:00 php-fpm: pool www 

Как вы можете видеть, 24 процессов работает уже в течение 0 секунд (HTOP говорит мне это около 2 мс). Они останутся такими навсегда. Все они появились одновременно.

Мой конфиг:

pid = /var/run/php5-fpm.pid 
error_log = /var/log/php5-fpm.log 
log_level = debug 
user = www-data 
group = www-data 
listen = 127.0.0.1:9000 
pm = dynamic 
pm.max_children = 30 
pm.start_servers = 5 
pm.min_spare_servers = 3 
pm.max_spare_servers = 7 
pm.max_requests = 500 

Кроме того, я никогда не видел ничего в PHP-fpm.log (только NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful)

Кто-нибудь?

EDIT: Я попытался запустить как ondemand и dynamic процесса менеджер

ответ

-1

Я не могу оставить комментарий, хотя вы должны проверить файл журнала, связанные с PHP:

(/var/www/) 

((hostname)/logs/error_log) 

и

(/var/log/php5-fpm.log) 
+0

'/ var/log/php5-fpm.log' пуст. Мои журналы ошибок php не регистрируют ничего интересного (только ошибки из моего приложения). –

+0

попробуйте это в своей оболочке: 'for i in {1..100}; делать php-fpm; killall php-fpm; done' –

+2

Ну, мне легко убить их и заставить его снова работать. Я могу просто перезапустить службу php-fpm. Но это только помогает мне, пока он снова не сработает. Я ищу причину этого. –

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