Высокая нагрузка на CPU в php-fpm

fixxxer

К.О.
Партнер клуба
да на отдельном сервере у него база, тут только nginx + fpm как я понял.

еще идиотское предположение - php внезапно не с ZTS? :)
 

Labutin

Новичок
Да, на сервере только nginx + php-fpm
PHP без ZTS
В момент всплеска по top видно, что в топе именно php-fpm процессы, памяти больше есть не начинают.
По itop картинка в момент всплеска не меняется.

Есть вот такой факт. Если всплеск происходит под конец рабочего дня, то автоматический рестартер php-fpm может не среагировать, т.к. Load Average поднимается незначительно. НО нагрузка на CPU получается около 15% (период малой активности пользователей). Хотя если все штатно, то вечером/ночью нагрузка на CPU около 5%. Ручной рестарт php-fpm вечером приводит к уменьшению загрузки CPU до штатных 5%.
Т.е. если что-то в php-fpm "залипает", то это сохраняется до его рестарта. И уменьшение активности пользователей ситуацию не выравнивает.
Вот еще что. Помогает избавиться от всплеска /etc/init.d/php-fpm reload , т.е. мастер процесс php-fpm при этом не рестартует.
 

Sender

Новичок
и если просто strace без -c посмотреть, есть там что-то интересное?

ну и конфиг php-fpm и php -i покажите.

Не пробовали в php-fpm менять pm.max_requests?
 

Gas

может по одной?
а какое значение pm.max_requests ? может его до нескольких сотен попытаться уменьшить если там тысячи?
 

fixxxer

К.О.
Партнер клуба
да, max_requests если 0 или 100500 то выставить в 500-1000 обязательно!

и еще вопрос, fpm слушает tcp или unix socket?
 

Labutin

Новичок
Вот конфиг php-fpm.conf
[global]
pid = /opt/php5/var/run/php-fpm.pid
log_level = notice

emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 5s

[main]
listen = 127.0.0.1:10005
user = nginx
group = site

pm = static
pm.max_children = 80
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 500
request_slowlog_timeout = 10m
slowlog = /opt/php5/var/log/php-fpm.main.log.slow
 

Sender

Новичок
> emergency_*
а это зачем?

попробуйте написать в php-fpm maillist
если есть возможность - попробовать перекинуть обработку на другой сервер, может дело в железе, или установленном софте
strace опять же посмотреть без -c
всякие системные лимиты проверить, настройки ядра, но скорее всего это в логах бы было
у меня особо больше идей нету
 

fixxxer

К.О.
Партнер клуба
еще есть маловероятный но все же вариант - попробуйте перевесить на unix socket

дальше угадайка style идей нет, надо ковырять.
 
Сверху