<?xml version="1.0" encoding="ISO-8859-1"?>
<!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="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<meta content="noindex, nofollow" name="robots" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Stopping and Restarting - Apache HTTP Server</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" /><link href="http://httpd.apache.org/docs/current/stopping.html" rel="canonical" /></head>
<body id="manual-page"><div id="page-header">
<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>
<p class="apache">Apache HTTP Server Version 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 Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.0</a></div><div id="page-content"><div class="retired"><h4>Please note</h4>
            <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p>
        <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/stopping.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Stopping and Restarting</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/stopping.html" 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" hreflang="ru" rel="alternate" title="Russian">&nbsp;ru&nbsp;</a> |
<a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>

    <p>This document covers stopping and restarting Apache on
    Unix-like systems. Windows NT, 2000 and XP users should see
    <a href="platform/windows.html#winsvc">Running Apache as a
    Service</a> and Windows 9x and ME users should see <a href="platform/windows.html#wincons">Running Apache as a
    Console Application</a> for information on how to control
    Apache on those platforms.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">Introduction</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#term">Stop Now</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#graceful">Graceful Restart</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#hup">Restart Now</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#race">Appendix: signals and race conditions</a></li>
</ul><h3>See also</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><li><a href="invoking.html">Starting</a></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">Introduction</a></h2>

    <p>In order to stop or restart Apache, you must send a signal to
    the running <code class="program"><a href="./programs/httpd.html">httpd</a></code> processes.  There are two ways to
    send the signals.  First, you can use the unix <code>kill</code>
    command to directly send signals to the processes. You will
    notice many <code class="program"><a href="./programs/httpd.html">httpd</a></code> executables running on your system,
    but you should not send signals to any of them except the parent,
    whose pid is in the <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>. That is to say you
    shouldn't ever need to send signals to any process except the
    parent. There are three signals that you can send the parent:
    <code><a href="#term">TERM</a></code>,
    <code><a href="#hup">HUP</a></code>, and
    <code><a href="#graceful">USR1</a></code>, which
    will be described in a moment.</p>

    <p>To send a signal to the parent you should issue a command
    such as:</p>

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

    <p>The second method of signaling the <code class="program"><a href="./programs/httpd.html">httpd</a></code> processes
    is to use the <code>-k</code> command line options: <code>stop</code>,
    <code>restart</code>, and <code>graceful</code>,
    as described below.  These are arguments to the <code class="program"><a href="./programs/httpd.html">httpd</a></code> binary, but we recommend that
    you send them using the <code class="program"><a href="./programs/apachectl.html">apachectl</a></code> control script, which
    will pass them through to <code class="program"><a href="./programs/httpd.html">httpd</a></code>.</p>

    <p>After you have signaled <code class="program"><a href="./programs/httpd.html">httpd</a></code>, you can read about
    its progress by issuing:</p>

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

    <p>Modify those examples to match your <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code> and <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code> settings.</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">Stop Now</a></h2>

<dl><dt>Signal: TERM</dt>
<dd><code>apachectl -k stop</code></dd>
</dl>

    <p>Sending the <code>TERM</code> or <code>stop</code> signal to
    the parent causes it to immediately attempt to kill off all of its
    children. It may take it several seconds to complete killing off
    its children.  Then the parent itself exits. Any requests in
    progress are terminated, and no further requests are served.</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">Graceful Restart</a></h2>

<dl><dt>Signal: USR1</dt>
<dd><code>apachectl -k graceful</code></dd>
</dl>

    <p>The <code>USR1</code> or <code>graceful</code> signal causes
    the parent process to <em>advise</em> the children to exit after
    their current request (or to exit immediately if they're not
    serving anything). The parent re-reads its configuration files and
    re-opens its log files. As each child dies off the parent replaces
    it with a child from the new <em>generation</em> of the
    configuration, which begins serving new requests immediately.</p>

    <div class="note">On certain platforms that do not allow <code>USR1</code> to
    be used for a graceful restart, an alternative signal may be used (such
    as <code>WINCH</code>). The command <code>apachectl graceful</code>
    will send the right signal for your platform.</div>

    <p>This code is designed to always respect the process control
    directive of the MPMs, so the number of processes and threads
    available to serve clients will be maintained at the appropriate
    values throughout the restart process.  Furthermore, it respects
    <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> in the
    following manner: if after one second at least <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> new children have not
    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">&nbsp;de&nbsp;</a> |
<a href="./en/stopping.html" 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" hreflang="ru" rel="alternate" title="Russian">&nbsp;ru&nbsp;</a> |
<a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 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>