Я пытаюсь найти способ быстро перезапустить Apache, чтобы применить изменения конфигурации. Целью является:
Apache имеет команду плавного перезапуска, которая удовлетворяет первой цели, команда перезапуска выполняется немедленно, и существующие запросы не затрагиваются. Однако перезапуск не атомарный. Если есть существующие подключения к серверу в состоянии Keep-Alive, то все следующие запросы, которые они отправляют, обрабатываются старыми процессами со старой конфигурацией.
В моем случае сервер Apache находится за балансировщиком нагрузки, который может отправлять сотни запросов по одному соединению. Таким образом, после перезапуска требуется много долгих минут, пока новая конфигурация не будет применена ко всем новым запросам.
Есть ли способ исправить это, например заставить Apache закрыть любое существующее соединение Keep-Alive со старым процессом после того, как он завершит обслуживание текущего запроса?
Перемена KeepAlive
Off
, выполните плавный перезапуск и отключите его некоторое время, внесите изменения в конфигурацию и выполните еще один плавный перезапуск. Это похоже на практику уменьшения TTL для записи DNS перед изменением.
Как насчет настройки MaxKeepAliveReqests и вашего KeepAliveTimeout достаточно низкий, чтобы клиенты могли использовать keepalive, но не поддерживать эти соединения так долго?