Веб-сайт требует перезапуска php-fpm для ускорения

У меня проблема с временем отклика моего сервера, когда я перезапускаю php. Веб-сайты FPM загружаются быстро, а затем снова через некоторое время такая же ситуация, поэтому мне приходится снова перезапускать fpm.

Я изменил pm_max_children, pm_max_requests, pm_min_spare_servers, но ничего не работает.

Пожалуйста, помогите мне решить эту проблему.

Прямо сейчас pm_max_children = 600

0
задан 31 October 2019 в 07:21
2 ответа

У меня была похожая проблема пару недель назад, и я нашел эту статью о Полезные настройки php-fpm. Возможно, стоит проработать эти разделы, чтобы проверить свои настройки. В нем есть расчет того, как установить ограничения памяти для процесса PHP. https://medium.com/@richb_/tweaking-nginx-and-php-fpm-configuration-to-fix-502-bad-gateway-errors-and-optimise-performance-on-17465f41fd87

0
ответ дан 5 December 2019 в 00:11

Сколько ядер и оперативной памяти у вашего сервера? Перед тем, как перезапустить сервер, сколько PHP-процессов существует и что говорит «верхний»?

Подсчитайте php-процессы

ps -ef | grep php

Завершите работу (отредактируйте свой вопрос, чтобы скопировать и вставить верхний текст, отформатированный так, чтобы он отображался правильно Первые 4 или 5 строк являются наиболее важными)

top

Я подозреваю, что вы пытаетесь использовать больше ресурсов, чем имеет ваш сервер. PHP может использовать много памяти - иногда 100 МБ на поток (дочерний) или больше. Если вы сказали ему использовать 600 дочерних элементов, которые могут составлять 60 ГБ ОЗУ, так что у вас все в порядке.

У меня есть EC2 t3.nano с 500 МБ ОЗУ и 500 МБ подкачки, на котором запущены MySQL, PHP, Nginx, и еще несколько вещей. Я установил pm.max_children = 4. Вот мои ключевые настройки динамического пула PHP для моего очень слабо загруженного сервера

pm = dynamic
pm.max_children = 4
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 2
; This next line restarts the PHP thread once it's serviced 100 threads - I have a buggy program
pm.max_requests = 100

. У меня есть еще один пул PHP, который используется только для тестирования, что бывает редко, поэтому по умолчанию не используются резервные процессы PHP

pm = ondemand
pm.max_children = 2
pm.process_idle_timeout = 120s;
pm.max_requests = 50

В моей конфигурации Nginx я используйте эту команду для отправки моего тестового сайта в пул тестов PHP

fastcgi_pass   php56-fpm-testpool;

Предложения

Используйте примерно такую ​​конфигурацию, чтобы уменьшить использование ОЗУ. Это действительно зависит от вашей нагрузки, и вам следует настроить числа.

pm = dynamic
pm.max_children = 75
pm.start_servers = 25
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 500
0
ответ дан 5 December 2019 в 00:11

Теги

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