📄 stopping.html.en
字号:
been created, then create enough to pick up the slack. Hence the
code tries to maintain both the number of children appropriate for
the current load on the server, and respect your wishes with the
<code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>
parameter.</p>
<p>Users of <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
will notice that the server statistics are <strong>not</strong>
set to zero when a <code>USR1</code> is sent. The code was
written to both minimize the time in which the server is unable
to serve new requests (they will be queued up by the operating
system, so they're not lost in any event) and to respect your
tuning parameters. In order to do this it has to keep the
<em>scoreboard</em> used to keep track of all children across
generations.</p>
<p>The status module will also use a <code>G</code> to indicate
those children which are still serving requests started before
the graceful restart was given.</p>
<p>At present there is no way for a log rotation script using
<code>USR1</code> to know for certain that all children writing
the pre-restart log have finished. We suggest that you use a
suitable delay after sending the <code>USR1</code> signal
before you do anything with the old log. For example if most of
your hits take less than 10 minutes to complete for users on
low bandwidth links then you could wait 15 minutes before doing
anything with the old log.</p>
<div class="note">If your configuration file has errors
in it when you issue a restart then your parent will not
restart, it will exit with an error. In the case of graceful
restarts it will also leave children running when it exits.
(These are the children which are "gracefully exiting" by
handling their last request.) This will cause problems if you
attempt to restart the server -- it will not be able to bind to
its listening ports. Before doing a restart, you can check the
syntax of the configuration files with the <code>-t</code>
command line argument (see <code class="program"><a href="./programs/httpd.html">httpd</a></code>). This still will not
guarantee that the server will restart correctly. To check the
semantics of the configuration files as well as the syntax, you
can try starting <code class="program"><a href="./programs/httpd.html">httpd</a></code> as a non-root user. If there
are no errors it will attempt to open its sockets and logs and fail
because it's not root (or because the currently running
<code class="program"><a href="./programs/httpd.html">httpd</a></code> already has those ports bound). If it fails
for any other reason then it's probably a config file error and the error
should be fixed before issuing the graceful restart.</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">Restart Now</a></h2>
<dl><dt>Signal: HUP</dt>
<dd><code>apachectl -k restart</code></dd>
</dl>
<p>Sending the <code>HUP</code> or <code>restart</code> signal to
the parent causes it to kill off its children like in
<code>TERM</code>, but the parent doesn't exit. It re-reads its
configuration files, and re-opens any log files. Then it spawns a
new set of children and continues serving hits.</p>
<p>Users of <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
will notice that the server statistics are set to zero when a
<code>HUP</code> is sent.</p>
<div class="note">If your configuration file has errors in it when you issue a
restart then your parent will not restart, it will exit with an
error. See above for a method of avoiding this.</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">Appendix: signals and race conditions</a></h2>
<p>Prior to Apache 1.2b9 there were several <em>race
conditions</em> involving the restart and die signals (a simply put,
a race condition is a time-sensitive problem - if something happens
at just the wrong time or things happen in the wrong order,
undesired behaviour will result. If the same thing happens at the right
time, all will be well). For those architectures that have the "right"
feature set we have eliminated as many as we can. But it should
be noted that race conditions do still exist on certain
architectures.</p>
<p>Architectures that use an on-disk <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> can potentially have
their scoreboards corrupted. This can result in the "bind:
Address already in use" (after <code>HUP</code>) or "long lost
child came home!" (after <code>USR1</code>). The former is a fatal
error, while the latter just causes the server to lose a
scoreboard slot. So it may be advisable to use graceful
restarts, with an occasional hard restart. These problems are very
difficult to work around, but fortunately most architectures do
not require a scoreboard file. See the <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code> documentation for
architecture which uses it.</p>
<p>All architectures have a small race condition in each child
involving the second and subsequent requests on a persistent
HTTP connection (KeepAlive). It may exit after reading the
request line but before reading any of the request headers.
There is a fix that was discovered too late to make 1.2. In
theory this isn't an issue because the KeepAlive client has to
expect these events because of network latencies and server
timeouts. In practice it doesn't seem to affect anything either
-- in a test case the server was restarted twenty times per
second and clients successfully browsed the site without
getting broken images or empty documents. </p>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
<a href="./en/stopping.html" title="English"> en </a> |
<a href="./es/stopping.html" hreflang="es" rel="alternate" title="Espa駉l"> es </a> |
<a href="./ja/stopping.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./ru/stopping.html" hreflang="ru" rel="alternate" title="Russian"> ru </a></p>
</div><div id="footer">
<p class="apache">Copyright 2006 The Apache Software Foundation.<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/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -