stopping.html.en revision b9d4dbc11f13f990bf18b912f4716474d384cf98
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Bosch<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<!--#include virtual="header.html" -->
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<p>You will notice many <code>httpd</code> executables running on your system,
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschbut you should not send signals to any of them except the parent, whose
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschpid is in the <a href="mod/core.html#pidfile">PidFile</a>. That is to
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschsay you shouldn't ever need to send signals to any process except the
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschparent. There are three signals that you can send the parent:
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<code>TERM</code>, <code>HUP</code>, and <code>USR1</code>, which will
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschbe described in a moment.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<p>To send a signal to the parent you should issue a command such as:
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch kill -TERM `cat /usr/local/etc/httpd/logs/httpd.pid`
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan BoschYou can read about its progress by issuing:
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan BoschModify those examples to match your
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<a href="mod/core.html#serverroot">ServerRoot</a> and
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<a href="mod/core.html#pidfile">PidFile</a> settings.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<p>Sending the <code>TERM</code> signal to the parent causes it to
47fee1a942e4797548b1232354f6676b8ff809f4Stephan Boschimmediately attempt to kill off all of its children. It may take it
47fee1a942e4797548b1232354f6676b8ff809f4Stephan Boschseveral seconds to complete killing off its children. Then the
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschparent itself exits. Any requests in progress are terminated, and no
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschfurther requests are served.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<p>Sending the <code>HUP</code> signal to the parent causes it to kill off
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschits children like in <code>TERM</code> but the parent doesn't exit. It
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschre-reads its configuration files, and re-opens any log files.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan BoschThen it spawns a new set of children and continues
f9d2a1f21ad65262bc630f0834d7eead06a1bac3Timo Sirainen<p>Users of the
f9d2a1f21ad65262bc630f0834d7eead06a1bac3Timo Sirainen<a href="mod/mod_status.html">status module</a>
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschwill notice that the server statistics are
15d19d6e4daf460d8d2c82b981e23996dbdf7ba5Timo Sirainen<p><b>Note:</b> If your configuration file has errors in it when you issue a
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschrestart then your parent will not restart, it will exit with an error.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan BoschSee below for a method of avoiding this.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<p><b>Note:</b> prior to release 1.2b9 this code is quite unstable and
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschshouldn't be used at all.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<p>The <code>USR1</code> signal causes the parent process to <i>advise</i>
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschthe children to exit after their current request (or to exit immediately
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschif they're not serving anything). The parent re-reads its configuration
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschfiles and re-opens its log files. As each child dies off the parent
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschreplaces it with a child from the new <i>generation</i> of the
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Boschconfiguration, which begins serving new requests immediately.
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<p>This code is designed to always respect the
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<a href="mod/core.html#maxclients">MaxClients</a>,
3fcb3d2d1f3583025ff62bae95ec706920f398b1Stephan Bosch<a href="mod/core.html#minspareservers">MinSpareServers</a>,
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschand <a href="mod/core.html#maxspareservers">MaxSpareServers</a> settings.
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan BoschFurthermore, it respects <a href="mod/core.html#startservers">StartServers</a>
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschin the following manner: if after one second at least StartServers new
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschchildren have not been created, then create enough to pick up the slack.
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan BoschThis is to say that the code tries to maintain both the number of children
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschappropriate for the current load on the server, and respect your wishes
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschwith the StartServers parameter.
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Bosch<p>Users of the
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Bosch<a href="mod/mod_status.html">status module</a>
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschwill notice that the server statistics
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschare <b>not</b> set to zero when a <code>USR1</code> is sent. The code
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschwas written to both minimize the time in which the server is unable to serve
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschnew requests (they will be queued up by the operating system, so they're
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschnot lost in any event) and to respect your tuning parameters. In order
e1a4ea6ad3e799ef8df7395e765c0ae9218e6c5dStephan Boschto do this it has to keep the <i>scoreboard</i> used to keep track
<!--#include virtual="footer.html" -->