Задать вопрос

Воркеры php-fpm неожиданно начинают потреблять значительно больше CPU?

Есть сервис, который с периодичностью в 30 минут запускает большое кол-во запросов в отношении php приложения.

$ php-fpm7.3 --version
PHP 7.3.19-1~deb10u1 (fpm-fcgi) (built: Jul  5 2020 06:46:45)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.19-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies

$ php --version
PHP 7.3.19-1~deb10u1 (cli) (built: Jul  5 2020 06:46:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.19-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies


Время от времени по неясным причинам эти запросы начинают создавать нагрузку сильно больше, чем было.
60709c378e358989642950.png

Затем выполняется `systemctl restart php7.3-fpm.service` и все приходит в норму.
60709c5b3e86a737875830.png

Рестарт каждый раз выполняется через разные промежутки времени и всегда помогает решить эту проблему до следующего проявления. Может пройти 5-15 дней.

$ grep -v '^;' /etc/php/7.3/fpm/pool.d/www.conf | grep -v '^$'
[www]
user = www-data
group = www-data
listen = /run/php/php7.3-fpm.sock
listen.backlog = 1024
listen.owner = www-data
listen.group = www-data
pm = static
pm.max_children = 50
pm.max_requests = 50
pm.status_path = /status
ping.path = /ping
rlimit_files = 8192


Кол-во воркеров 50 выведено эмпирическим путем.
На сервере больше ничего не крутится, только php-fpm. БД и другие необходимые части приложения на других серверах.
  • Вопрос задан
  • 243 просмотра
Подписаться 3 Сложный 3 комментария
Решения вопроса 1
idmrty
@idmrty
Ещё вариант: заполняется OPcache. Чтобы проверить, вместо FPM restart попробуете выполнить его сброс.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Смотрите логи, отслеживайте запуск программ. Отчетливо видно, что у вас каждые 10 минут что-то запускается (маленькие короткие всплески), ну и каждые 30 минут - уже известный вам php-fpm. Но в какой-то момент что-то происходит, что поднимает нагрузку на CPU на заметный уровень. Если нагрузка снимается перезапуском php-fpm - тогда что вам стоит перед перезапуском проверить нагрузку системы (вывод top/htop/iotop/ps axf...)? Ну и логирование работы php-скриптов, которые работают под php-fpm, разумеется.
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
вполне вероятно что параллельно идет какая-нибудь проверка обновлений или индексирование запускается..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы