Как автоматически перезапустить php-cgi с помощью spawn-fcgi

Я запускаю nginx с php как fcgi. Работает просто отлично, однако php-cgi продолжает выход () после обслуживания 500 запросов. Я попытался увеличить это значение (PHP_FCGI_MAX_REQUESTS), и это сработало, но, похоже, это обходной путь. Затем я установил его на 0, и он еще не вышел (). Но я думаю, что есть причина, по которой php-cgi должен быть перезапущен. В данный момент я запускаю php-cgi с spawn-fcgi: когда завершается процесс php, тоже выходит spawn-fcgi. Теперь есть ли способ автоматически перезапустить php (без грязных взломов, таких как while [ 1 ]; do spawn-fcgi; done так далее)?

2 ответа

Есть ли причина, по которой вы не можете переключиться на PHP-FPM? Он поставляется с PHP >= 5.3, и есть патч, чтобы включить его для 5.2. Я использую его около года, и он был абсолютно стабильным без проблем. Это приведет к исчезновению проблемы с порождением вашего процесса, так как PHP-FPM будет прозрачно обрабатывать уничтожение старых процессов и перезапуск новых для вас.

Причина для PHP_FCGI_MAX_REQUESTS заключается в том, что PHP случайно перестанет отвечать на запросы после определенного числа из них. Кажется, что эта ошибка могла быть частично исправлена ​​в более новых версиях, но во время моего тестирования 5.2.x я заметил, что это происходило несколько раз.

Для этого был разработан multiwatch (для перезапуска дочерних процессов, запускаемых spawn-fcgi) - см. http://cgit.stbuehler.de/gitosis/multiwatch/about/

Другие вопросы по тегам