summaryrefslogtreecommitdiff
path: root/docs/manual/stopping.html.ru.koi8-r
blob: 40f5233917295726ac14b672faf0356b2e1e0240 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
<?xml version="1.0" encoding="KOI8-R"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"><head><!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Останов и перезапуск - HTTP сервер Apache</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Модули</a> | <a href="./mod/directives.html">Директивы</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Глоссарий</a> | <a href="./sitemap.html">Карта сайта</a></p>
<p class="apache">HTTP сервер Apache версии 2.0</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP сервер</a> &gt; <a href="http://httpd.apache.org/docs/">Документация</a> &gt; <a href="./">Версия 2.0</a></div><div id="page-content"><div id="preamble"><h1>Останов и перезапуск</h1>
<div class="toplang">
<p><span>Доступные языки: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/stopping.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/stopping.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./ja/stopping.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./ru/stopping.html" title="Russian">&nbsp;ru&nbsp;</a></p>
</div>

    <p>Этот документ рассматривает вопросы остановки и перезапуска Apache на
    Unix-подобных системах. Пользователям Windows NT, 2000 и XP следует читать раздел
    <a href="platform/windows.html#winsvc">"Работа Apache как сервиса"</a>,
    а пользователям Windows 9x и ME - <a href="platform/windows.html#wincons">"Работа
    Apache как консольного приложения"</a>, для получения информации об
    управлении сервером на этих платформах.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Введение</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#term">Немедленная остановка</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#graceful">Мягкий перезапуск</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#hup">Немедленный перезапуск</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#race">Приложение: сигналы и ситуации гонки (race conditions)</a></li>
</ul><h3>См. также</h3><ul class="seealso"><li><code class="program"><a href="./programs/httpd.html">httpd</a></code></li><li><code class="program"><a href="./programs/apachectl.html">apachectl</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="introduction" id="introduction">Введение</a></h2>

    <p>Для того, чтобы остановить или перезапустить Apache, необходимо послать
    сигнал запущенным процессам <code class="program"><a href="./programs/httpd.html">httpd</a></code>. Существует два способа
    отправить подобные сигналы. Во-первых, вы можете послать сигналы непосредственно
    процессам, используя команду unix <code>kill</code>. Обратите внимание,
    что процессов <code class="program"><a href="./programs/httpd.html">httpd</a></code> в системе выполняется несколько,
    однако вы не должны отсылать сигналы ни одному из них, кроме родительского -
    его pid (идентификатор процесса) записывается в файл, путь к которому задается
    директивой <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>. Существуют три
    сигнала, которые вы можете отправить родительскому процессу: 
    <a href="#term"><code>TERM</code></a>,
    <a href="#hup"><code>HUP</code></a>, и
    <a href="#graceful"><code>USR1</code></a> - их значение будет объяснено ниже.</p>

    <p>Чтобы отправить сигнал родительскому процессу, вам следует набрать следующую команду:</p>

<div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>

    <p>Второй способ передать сигналы процессам <code class="program"><a href="./programs/httpd.html">httpd</a></code> - это
    использование опции <code>-k</code> в командной строке с аргументами: <code>stop</code>,
    <code>restart</code> и <code>graceful</code>, как будет описано ниже.
    Это параметры командной строки для исполняемого файла <code class="program"><a href="./programs/httpd.html">httpd</a></code>,
    однако мы рекомендуем передавать их, используя скрипт <code class="program"><a href="./programs/apachectl.html">apachectl</a></code>,
    который передаст эти параметры программе <code class="program"><a href="./programs/httpd.html">httpd</a></code>.</p>

    <p>После того, как будут отправлены сигналы процессу <code>httpd</code>, вы можете
    узнать о состоянии сервера, набрав:</p>

<div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>

    <p>Внесите необходимые изменения в эти примеры с учётом 
       значения директив <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code>
       и <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> в конфигурации
       Apache.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="term" id="term">Немедленная остановка</a></h2>

<dl><dt>Сигнал: TERM</dt>
<dd><code>apachectl -k stop</code></dd>
</dl>

    <p>После получения сигнала <code>TERM</code> или <code>stop</code>,
    родительский процесс пытается немедленно уничтожить все дочерние процессы.
    Это может занять несколько секунд. Затем родительский процесс сам завершает работу,
    при этом все текущие запросы прекращают обрабатываться, а новые запросы игнорируются.</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="graceful" id="graceful">Мягкий перезапуск</a></h2>

<dl><dt>Сигнал: USR1</dt>
<dd><code>apachectl -k graceful</code></dd>
</dl>

    <p>При получении сигнала <code>USR1</code> или <code>graceful</code>,
    родительский процесс <em>призывает</em> дочерние процессы к завершению работы
    сразу же после обработки своего текущего запроса (или к незамедлительной остановке,
    если дочерний процесс ничего не обрабатывает). Родительский процесс
    перечитывает конфигурационные файлы, открывает заново log-файлы
    (файлы, содержащие журнал работы сервера). После того, как какой-то из
    дочерних процессов завершает работу, родительский процесс заменяет его
    дочерним процессом нового <em>поколения</em>, т.е. с новой конфигурацией,
    который начинает обрабатывать новые запросы незамедлительно.</p>

    <div class="note">На некоторых платформах, не поддерживающих передачу сигнала <code>USR1</code>
    как сигнала для инициации мягкого перезапуска, могут
    использоваться другие сигналы (такие как <code>WINCH</code>).
    Команда <code>apachectl graceful</code> отправит корректный сигнал
    на любой платформе.</div>

    <p>Программа разработана таким образом, что количество процессов и потоков,
    определённое директивами МП-модуля (мульти-процессного модуля),
    оставалось неизменным на протяжение всего процесса перезапуска.
    Кроме того, для поддержания числа запущенных процессов, определённого
    директивой <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>, 
    используется следующий способ: если спустя одну секунду не было
    создано по крайней мере такое количество дочерних процессов, какое
    определено директивой <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>,
    тогда создаётся такое количество дочерних процессов, которое полностью
    восполнило бы недостаток. Таким образом сервер пытается одновременно и сохранить 
    количество уже существующих дочерних процессов неизменным, и учесть ваши 
    требования, указанные в директиве <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>.</p>

    <p>Пользователи, использующие модуль <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>,
    могут обратить внимание, что статистика сервера при получении сигнала
    <code>USR1</code> не обнуляется. Так было сделано для того, чтобы уменьшить
    промежуток времени, в течение которого сервер не может обрабатывать
    новые запросы (которые операционная система будет ставить в очередь,
    т.е. они не пропадут в любом случае), а также для того, чтобы учитывать
    ваши настройки. Для этого сервер хранит <em>таблицу статистики</em>,
    в которую записываются результаты работы всех дочерних процессов, вне зависимости от их поколения.</p>

    <p>Модуль <code>mod_status</code> также использует символ <code>G</code>, чтобы
    обозначить те дочерние процессы, которые всё ещё обрабатывают запросы и которые были
    созданы до сигнала к мягкому перезапуску.</p>

    <p>В настоящее время нет способа определить,
    что все дочерние процессы закончили запись в старый log-файл (т.е.
    log-файл, в который производилась запись до перезапуска). Мы
    предлагаем вам подождать некоторое время, после того как будет
    послан сигнал <code>USR1</code>, прежде чем делать что-либо
    со старым log-файлом. Например, если на выполнение запросов
    пользователей, подключённых через очень медленный канал, уходит
    не более 10 минут, тогда логично будет подождать 15 минут, прежде чем
    делать что-либо со старым log-файлом.</p>

    <div class="note">Если Ваш конфигурационный файл содержит ошибки, то попытка
    перезапустить сервер вызовет немедленное прекращение работы родительского
    процесса с сообщением об ошибке.  В случае мягкого перезапуска
    дочерние процессы продолжают обрабатывать свои запросы, после чего 
    они завершат свою работу. Это может вызвать проблемы,
    так как сервер не будет в состоянии установить соединение с необходимыми
    портами. Перед выполнением перезапуска, вы должны
    проверить синтаксис конфигурационных файлов с помощью параметра
    <code>-t</code> командной строки (см. описание <code class="program"><a href="./programs/httpd.html">httpd</a></code>).
    Однако это всё ещё не гарантирует, что сервер перезапустится корректно.
    Чтобы проверить семантику конфигурационных файлов, равно как и их синтаксис,
    вы можете попробовать запустить <code class="program"><a href="./programs/httpd.html">httpd</a></code>, будучи непривилегированным пользователем.
    Если ошибки отсутствуют, то <code class="program"><a href="./programs/httpd.html">httpd</a></code> попытается открыть
    сокеты и log-файлы, но не сможет этого сделать, потому что у него отсутствуют
    необходимые для этого права (или потому что в текущее время работающий <code class="program"><a href="./programs/httpd.html">httpd</a></code> уже
    установил соединение с нужными портами, заняв их). Если сбой
    происходит по любой другой причине - значит, скорее всего,
    существует ошибка в конфигурационном файле, которая должна быть
    исправлена перед началом мягкого перезапуска.</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="hup" id="hup">Немедленный перезапуск</a></h2>

<dl><dt>Сигнал: HUP</dt>
<dd><code>apachectl -k restart</code></dd>
</dl>

    <p>Отправленный родительскому процессу сигнал <code>HUP</code> 
    или <code>restart</code> вызывает немедленное уничтожение 
    всех дочерних процессов, также как и при обработке сигнала 
    <code>TERM</code>, однако родительский процесс не завершает работу.
    Он перечитывает конфигурационные файлы и открывает заново log-файлы
    (файлы, содержащие журнал работы сервера). Затем он порождает
    новых потомков и продолжает обработку запросов.</p>

    <p>Пользователи, использующие модуль <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>,
    могут обратить внимание, что статистика сервера при получении сигнала
    <code>HUP</code> полностью обнуляется.</p>

<div class="note">Если Ваш конфигурационный файл содержит ошибки, то попытка
перезапустить сервер вызовет немедленное прекращение его работы
с сообщением об ошибке. Способы избежать этого смотрите выше.
</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="race" id="race">Приложение: сигналы и ситуации гонки (race conditions)</a></h2>

    <p>В Apache до версии 1.2b9 существовало несколько <em>ситуаций гонки</em>,
    возникающих при получении сигналов к перезапуску или останову
    (проще говоря, ситуация гонки - чувствительная ко времени проблема,
    возникающая,
    когда что-то происходит в неподходящее время или в неправильном порядке.
    Если то же самое происходит в подходящее время, никаких проблем не возникает).
    Для компьютеров с архитектурами, имеющими "правильный", "хороший" набор 
    возможностей, подобные проблемы были устранены везде, где это возможно.
    Однако следует помнить, что на компьютерах с некоторыми архитектурами
    всё ещё существует возможность возникновения ситуаций гонки.</p>

    <p>Компьютеры с архитектурами, на которых таблица статистики хранится
    в файле, заданном директивой <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code>,
    имеют потенциальную возможность повреждения их таблиц статистики.
    Это может вызвать ошибку "bind: Address already in use"
    (после сигнала <code>HUP</code>) 
    или "long lost child came home!"
    (после сигнала <code>USR1</code>).  Последнее сообщение - фатальная ошибка,
    в то время как предыдущее сигнализирует только о потере связи с таблицей статистики.
    Поэтому можно порекомендовать использовать мягкий перезапуск, и лишь время от времени
    делать жесткий перезапуск. С этими проблемами очень сложно бороться,
    однако, к счастью, большинство архитектур не требуют хранить таблицу статистики
    на диске. Смотрите документацию к директиве  <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code>, чтобы узнать, на каких архитектурах
    используется этот файл.</p>

    <p>Во всех архитектурах существуют небольшие ситуации гонки
    в каждом дочернем процессе, начиная со второго запроса при постоянном
    HTTP соединении (KeepAlive). Процесс может завершиться после чтения
    строки запроса, но перед чтением заголовков запроса. Исправление
    появилось позже выпуска версии 1.2, а потому не включено в него. Теоретически это
    не проблема, потому что KeepAlive-клиент должен ожидать таких событий
    из-за задержек сети и времени ожидания сервера. Практически
    складывается впечатление, что это также не оказывает никакого 
    влияния - во время тестов сервер перезапускался с частотой 20 раз
    в секунду, а клиенты успешно просматривали сайт, не получая
    пустых документов и повреждённых картинок.</p>
</div></div>
<div class="bottomlang">
<p><span>Доступные языки: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/stopping.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/stopping.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./ja/stopping.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./ru/stopping.html" title="Russian">&nbsp;ru&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 1995-2006 The Apache Software Foundation or its licensors, as applicable.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Модули</a> | <a href="./mod/directives.html">Директивы</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Глоссарий</a> | <a href="./sitemap.html">Карта сайта</a></p></div>
</body></html>