Apache. Документация на русском


Разделы:   1      2      3    4    5    6    7    8    9    10    11    12    13    14    15    16  

Раздел 2. Использование HTTP-сервера Apache

Пункты:   6    7      8      9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25    26  

 <         > 
  RU            EN  

Пункт 8. Остановка и перезапуск сервера

Этот документ описывает остановку и перезапуск HTTP-сервера Apache в Unix-подобных системах. Пользователи Windows NT, 2000 и XP должны посмотреть Запуск httpd как службы, а пользователи Windows 9x и ME должны прочитать Запуск httpd как консольного приложения для получения информации о том, как управлять httpd на этих платформах.

Введение

Чтобы остановить или перезапустить HTTP-сервер Apache, вы должны отправить сигнал запущенным httpd процессам. Есть два способа отправки сигналов. Во-первых, вы можете использовать kill команду unix для прямой отправки сигналов процессам. Вы заметите, httpd что в вашей системе запущено много исполняемых файлов, но вы не должны посылать сигналы ни одному из них, кроме родителя, чей pid находится в файле PidFile . То есть вам никогда не нужно отправлять сигналы любому процессу, кроме родителя. Есть четыре сигнала, которые вы можете отправить родителю: TERM , USR1 , HUP и WINCH , которые будут описаны чуть позже.

Чтобы отправить сигнал родителю, вы должны выполнить команду, такую как:

kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

Второй способ подачи сигналов процессам httpd заключается в использовании -k параметров командной строки: stop , restart , graceful и graceful-stop , как описано ниже. Это аргументы для httpd двоичного файла, но мы рекомендуем отправлять их с помощью apache2ctl управляющего сценария, который передаст их в httpd .

После того, как вы просигнализировали httpd , вы можете прочитать о его ходе, выдав:

tail -f /usr/local/apache2/logs/error_log

Измените эти примеры, чтобы они соответствовали вашим настройкам ServerRoot и PidFile .

Остановить сейчас

Сигнал: ТЕРМИН
apache2ctl -k stop

Отправка сигнала TERM or stop родительскому объекту заставляет его немедленно попытаться убить всех своих потомков. Уничтожение дочерних элементов может занять несколько секунд. Затем родитель сам выходит. Любые выполняемые запросы прерываются, и дальнейшие запросы не обслуживаются.

Изящный перезапуск

Сигнал: USR1
apache2ctl -k graceful

Сигнал USR1 or graceful заставляет родительский процесс рекомендовать дочерним процессам выйти после их текущего запроса (или немедленно выйти, если они ничего не обслуживают). Родитель повторно читает свои файлы конфигурации и повторно открывает свои файлы журналов. Когда каждый потомок умирает, родитель заменяет его дочерним элементом из нового поколения конфигурации, который немедленно начинает обслуживать новые запросы.

Этот код предназначен для того, чтобы всегда соблюдать директиву управления процессами MPM, поэтому количество процессов и потоков, доступных для обслуживания клиентов, будет поддерживаться на соответствующих значениях в течение всего процесса перезапуска. Кроме того, он учитывает StartServers следующим образом: если по истечении одной секунды по крайней мере StartServers новые дочерние элементы не были созданы, то создайте достаточно, чтобы компенсировать слабину. Следовательно, код пытается поддерживать как количество дочерних элементов, соответствующее текущей нагрузке на сервер, так и учитывать ваши пожелания с параметром StartServers .

Пользователи mod_status заметят, что статистика сервера не обнуляется при USR1 отправке a. Код был написан как для минимизации времени, в течение которого сервер не может обслуживать новые запросы (они будут поставлены в очередь операционной системой, поэтому они ни в коем случае не будут потеряны), и для соблюдения ваших параметров настройки. Для этого он должен вести табло , используемое для отслеживания всех детей из поколения в поколение.

Модуль состояния также будет использовать a G для указания тех дочерних элементов, которые все еще обслуживают запросы, начатые до того, как был предоставлен корректный перезапуск.

В настоящее время нет способа использовать сценарий ротации журнала, USR1 чтобы точно знать, что все дочерние элементы, записывающие журнал перед перезапуском, завершили работу. Мы предлагаем вам использовать подходящую задержку после отправки USR1 сигнала, прежде чем что-либо делать со старым журналом. Например, если большинство ваших обращений занимает менее 10 минут для пользователей с низкой пропускной способностью, вы можете подождать 15 минут, прежде чем что-либо делать со старым журналом.

При перезагрузке сначала запускается проверка синтаксиса, чтобы убедиться в отсутствии ошибок в файлах конфигурации. Если в вашем файле конфигурации есть ошибки, вы получите сообщение об этой синтаксической ошибке, и сервер откажется перезапускаться. Это позволяет избежать ситуации, когда сервер останавливается, а затем не может перезапуститься, оставляя вас с неработающим сервером.

Это все равно не гарантирует, что сервер перезапустится правильно. Чтобы проверить семантику файлов конфигурации, а также синтаксис, вы можете попробовать начать httpd как пользователь без полномочий root. Если ошибок нет, он попытается открыть свои сокеты и журналы и потерпит неудачу, потому что он не root (или потому, что в настоящее время httpd уже привязаны эти порты). Если это не удается по какой-либо другой причине, то, вероятно, это ошибка файла конфигурации, и эту ошибку следует исправить до выдачи корректного перезапуска.

Перезагрузить сейчас

Сигнал: ХУП
apache2ctl -k restart

Отправка сигнала HUP или restart родительскому объекту приводит к тому, что он убивает своих дочерних элементов, как в случае TERM , но родитель не завершается. Он перечитывает свои файлы конфигурации и повторно открывает все файлы журналов. Затем он порождает новый набор дочерних элементов и продолжает отдавать хиты.

Пользователи mod_status заметят, что статистика сервера обнуляется при HUP отправке a.

Как и в случае корректного перезапуска, перед попыткой перезапуска выполняется проверка синтаксиса. Если в вашем файле конфигурации есть ошибки, перезапуск не будет предпринят, и вы получите уведомление о синтаксических ошибках.

Изящная остановка

Сигнал: ЛЕБЕДКА
apache2ctl -k graceful-stop

Сигнал WINCH or graceful-stop заставляет родительский процесс рекомендовать дочерним процессам выйти после их текущего запроса (или немедленно выйти, если они ничего не обслуживают). Затем родитель удалит его PidFile и перестанет прослушивать все порты. Родитель будет продолжать работать и отслеживать дочерние элементы, обрабатывающие запросы. Как только все дочерние процессы завершились и завершились, или истекло время ожидания, указанное параметром GracefulShutdownTimeout , родительский процесс также завершится. Если тайм-аут достигнут, всем оставшимся дочерним элементам будет отправлен сигнал TERM , чтобы заставить их выйти.

Сигнал TERM немедленно завершит родительский процесс и все дочерние процессы, когда он находится в «изящном» состоянии. Однако, поскольку завещание PidFile было удалено, вы не сможете использовать apache2ctl или httpd отправлять этот сигнал.

Сигнал graceful-stop позволяет запускать несколько одинаково настроенных экземпляров httpd одновременно. Это мощная функция при изящном обновлении httpd, однако она также может вызывать взаимоблокировки и состояния гонки в некоторых конфигурациях.

Были приняты меры к тому, чтобы файлы на диске, такие как файлы блокировки ( Mutex ) и файлы сокетов Unix ( ScriptSock ), содержали PID сервера и сосуществовали без проблем. Однако, если директива конфигурации, сторонний модуль или постоянный CGI используют любые другие файлы блокировки или состояния на диске, следует позаботиться о том, чтобы несколько запущенных экземпляров не httpd затирали файлы друг друга.

Вы также должны быть осторожны с другими потенциальными условиями гонки, такими как использование rotatelogs журналирования в стиле конвейера. Несколько запущенных экземпляров, rotatelogs пытающихся сменить одни и те же файлы журналов одновременно, могут уничтожить файлы журналов друг друга.



 <         > 

Пункты:   6    7      8      9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25    26  

Рейтинг@Mail.ru