Назад | Перейти на главную страницу

Что на самом деле означает «постепенная перезагрузка» с php fpm?

На странице руководства php-fpm указано, что ответ на сигнал USR2 следующий: «плавная перезагрузка всех рабочих + перезагрузка fpm conf / binary». Однако при тестировании я обнаружил, что перезагрузка фактически убивает рабочих, обрабатывающих запросы. Я ожидал, что запросы будут завершены до того, как процессы будут убиты и повторно созданы.

Это сломано, мои ожидания неверны или тест недействителен?

Моя тестовая установка:
Контейнер Ubuntu 16.04 LXC
установить php7.0-fpm и nginx
php для сна и вывода обратного отсчета каждую секунду
отправить запрос на сон на 30 секунд через curl
перезагрузить через systemctl

Результат испытаний:
запрос был убит сразу после перезагрузки

Я только что нашел свой ответ: вариант конфигурации process_control_timeout было установлено значение по умолчанию 0 секунд. На мой взгляд, ужасный дефолт.

Я установил process_control_timeout к стоимости 30s чтобы дочерние процессы могли завершиться и завершить работу до 30 секунд, прежде чем они будут принудительно уничтожены. Однако это вступает в силу только при последующих перезагрузках, так как первая перезагрузка требуется, чтобы это изменение вступило в силу.