Вы используете php-fpm, поэтому я предлагаю более настойчиво подходить к вопросу о том, как долго дети php-fpm могут жить. Вам нужно найти золотую середину между недолговечными потоками / дочерними элементами и стабильностью. Параметры по умолчанию php-fpm слишком удобны для любой производственной системы, ИМХО.
Я бы уменьшил количество для pm.max_requests для ваших производственных пулов. Я думаю, что по умолчанию 200. Я бы начал с 50 и посмотрю, куда это вас приведет.
В противном случае / в дополнение к этому вы также можете попробовать эти глобальные параметры (AFAIK все они отключены по умолчанию):
emergency_restart_threshold=3
emergency_restart_interval=1m
process_control_timeout=5s
What это значит? Если 3 дочерних процесса PHP-FPM завершают работу с SIGSEGV или SIGBUS (т.е. сбой) в течение 1 минуты, предполагается, что PHP-FPM перезапустится автоматически. Дочерние процессы ждут 5 секунд реакции на сигналы от мастера.
Благодаря этому ваш пул рабочих потоков PHP должен быть свежим и чистым. Чем дольше работнику разрешено отправлять запросы, тем более нестабильным он становится. Также существует более высокий риск утечки памяти.
Вот хороший обзор всех параметров конфигурации, которые я упомянул здесь, а также других: http://myjeeva.com/php-fpm-configuration-101.html
Надеюсь, эти советы вам помогут! Не забудьте настроить и наблюдать, к сожалению, для всего этого не существует практического правила, слишком много переменных, которые влияют на поведение и стабильность PHP.
http://myjeeva.com/php-fpm-configuration-101.htmlНадеюсь, эти советы вам помогут! Не забудьте настроить и наблюдать, к сожалению, для всего этого не существует практического правила, слишком много переменных, которые влияют на поведение и стабильность PHP.
http://myjeeva.com/php-fpm-configuration-101.htmlНадеюсь, эти советы вам помогут! Не забудьте настроить и наблюдать, к сожалению, для всего этого не существует практического правила, слишком много переменных, которые влияют на поведение и стабильность PHP.