<-
Apache > HTTP Server > Documentation > Version 2.0

остановка и Перестарт

эта остановка покрытий документа и перестартовый Apache на Подобных Unix системах. Windows NT, 2000 и пользователи XP должны видеть Running Apache as a Service и Windows 9x и Я пользователи должны видеть Running Apache as a Console Application для информации относительно того, как управлять Apache на тех платформах.

см. также

top

Introduction

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

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

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

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

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

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

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

top

Stop Now

сигнал: СРОК
apachectl -k stop

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

top

Graceful Restart

сигнал: USR1
apachectl -k graceful

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

на определенных платформах, которые не позволяют USR1 чтобы использоваться для изящного переначала, альтернативный сигнал может использоваться (, типа WINCH ). Команда apachectl graceful пошлет правильный сигнал за вашей платформой.

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

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

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

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

если ваш файл конфигурации будет иметь ошибки в этом, когда Вы выпускаете переначало тогда, то ваш родитель не будет повторно начинать, это выйдет с ошибкой. В случае изящных перезапусков это также оставит управление детей, когда это выходит. (Они - дети, которые "изящно выходят", обращаясь с их последним запросом.) Это вызовет проблемы, если Вы попытаетесь повторно начать сервер то - не будет в состоянии связать с его портами слушания. Перед выполнением переначала, Вы можете проверить синтаксис файлов конфигурации с -t аргумент линии команды (см. httpd ). Это все еще не будет гарантировать, что сервер повторно начнется правильно. Чтобы проверять семантику файлов конфигурации так же как синтаксиса, Вы можете пробовать начать httpd как пользователь некорня. Если не будет никаких ошибок, то это попытается открыть его гнезда и регистрации и терпеть неудачу, потому что это не корень (или потому что в настоящее время управление httpd уже связали те порты). Если это терпит неудачу по любой другой причине тогда, это - вероятно config ошибка файла, и ошибка должна быть установлена перед изданием изящного переначала.
top

Restart Now

сигнал: ПОНУКНУТЬ
apachectl -k restart

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

пользователи mod_status заметит, что статистические данные сервера собираются ноль когда a HUP посылается.

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

Appendix: signals and race conditions

до Apacheа 1.2b9 было несколько условия гонки вовлечение переначала и умирает сигналы (проще говоря, условие гонки - чувствительная ко времени проблема - если кое-что случится в только неправильное время, или вещи случаются в неправильном заказе, то нежеланное поведение закончится. Если та же самая вещь случится в нужное время, то все будут хорошо). Для той архитектуры, которая имеет "правильный" набор признаков, который мы устранили столько, сколько мы можем. Но должно быть отмечено, что условия гонки действительно все еще существуют на определенной архитектуре.

архитектура, которая использует на-диске ScoreBoardFile может потенциально развратить их табло. Это может привести, "свяжите: Адрес уже в использовании" (после того, как HUP ) или "долго потерянный ребенок пришел домой!" (после того, как USR1 ). Прежний - фатальная ошибка, в то время как последние правые дела сервер, чтобы потерять щель табло. Таким образом может быть желательно использовать изящные перезапуски, со случайным твердым переначалом. Эти проблемы очень трудны работать вокруг, но к счастью большинство архитектуры не требует файла табло. См. ScoreBoardFile документация для архитектуры, которая использует это.

вся архитектура имеет маленькое условие гонки в каждом ребенке, вовлекающем вторые и последующие запросы на постоянной связи HTTP (KeepAlive). Это может выйти после чтения линии запроса, но перед чтением любого из ударов головой запроса. Есть устанавливание, которое, как обнаруживали, слишком поздно сделало 1.2. В теории это не проблема, потому что клиент KeepAlive должен ожидать эти события из-за сети latencies и перерывов сервера. Практически это, кажется, не затрагивает что - нибудь или - в испытательном случае, сервер был повторно начат, двадцать раз в секунду и клиентов успешно просматривали участок, не будучи сломанным изображения или пустые документы.