1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8 <title>停止と再起動 - Apache HTTP サーバ</title>
9 <link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="./images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <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>
15 <p class="apache">Apache HTTP サーバ バージョン 2.0</p>
16 <img alt="" src="./images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
19 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="./">バージョン 2.0</a></div><div id="page-content"><div id="preamble"><h1>停止と再起動</h1>
21 <p><span>Available Languages: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
22 <a href="./en/stopping.html" hreflang="en" rel="alternate" title="English"> en </a> |
23 <a href="./es/stopping.html" hreflang="es" rel="alternate" title="Español"> es </a> |
24 <a href="./ja/stopping.html" title="Japanese"> ja </a> |
25 <a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
26 <a href="./ru/stopping.html" hreflang="ru" rel="alternate" title="Russian"> ru </a> |
27 <a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
29 <div class="outofdate">This translation may be out of date. Check the
30 English version for recent changes.</div>
32 <p>この文書では Unix に類似したシステムでの
33 Apache の停止と再起動について扱っています。
34 Windows NT, 2000, XP ユーザは<a href="platform/windows.html#winsvc">サービスとして
35 Apache を実行する</a>で、Windows 9x, MEユーザは<a href="platform/windows.html#wincons">コンソールアプリケーションとして
37 これらのプラットホームでの使用方法をご覧下さい。</p>
39 <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#introduction">イントロダクション</a></li>
40 <li><img alt="" src="./images/down.gif" /> <a href="#term">急な停止</a></li>
41 <li><img alt="" src="./images/down.gif" /> <a href="#graceful">緩やかな再起動</a></li>
42 <li><img alt="" src="./images/down.gif" /> <a href="#hup">急な再起動</a></li>
43 <li><img alt="" src="./images/down.gif" /> <a href="#race">付録: シグナルと競合状態</a></li>
44 </ul><h3>参照</h3><ul class="seealso"><li><a href="programs/httpd.html">httpd</a></li><li><a href="programs/apachectl.html">apachectl</a></li></ul></div>
45 <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
47 <h2><a name="introduction" id="introduction">イントロダクション</a></h2>
49 <p>Apache を停止したり再起動したりするためには、実行されている
50 <code>httpd</code> プロセスにシグナルを送る必要があります。
52 一つ目はプロセスに直接シグナルを送る unix の <code>kill</code>
54 システムを見ればたくさんの <code>httpd</code> が
55 実行されているのに気が付くでしょうが、シグナルを送るのは
56 親プロセスだけで、それ以外の個々のプロセスには
57 シグナルを送らないで下さい。その親プロセスの pid は
58 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>
59 に書かれています。これはつまり、親以外のプロセスに
60 シグナルを送る必要すらない、ということです。
61 親プロセスに送ることができる 3 種類のシグナルがあります:
62 <code><a href="#term">TERM</a></code>,
63 <code><a href="#hup">HUP</a></code>,
64 <code><a href="#graceful">USR1</a></code>
65 です。これらの説明については続きをご覧下さい。</p>
68 次のようなコマンドを発行して下さい:</p>
70 <div class="example"><p><code>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</code></p></div>
72 <p><code>httpd</code> プロセスにシグナルを送る 2 番目の方法は
73 <code>-k</code> というコマンドライン引数を使用することです。
74 下で説明されているように、<code>stop</code>, <code>restart</code>,
75 <code>graceful</code> を指定できます。
76 これらは <a href="programs/httpd.html">httpd</a> の引数ですが、
77 制御用のスクリプト <a href="programs/apachectl.html">apachectl</a> を
78 使うことをお薦めします。<a href="programs/apachectl.html">apachectl</a> はそれらの引数をそのまま
79 <code>httpd</code> に渡します。</p>
81 <p><code>httpd</code> にシグナルを送った後、
82 実行状況を次のコマンドで読むことができます:</p>
84 <div class="example"><p><code>tail -f /usr/local/apache2/logs/error_log</code></p></div>
86 <code class="directive"><a href="./mod/core.html#serverroot">ServerRoot</a></code>
88 <code class="directive"><a href="./mod/mpm_common.html#pidfile">PidFile</a></code>
89 の設定に適合するように適宜修正して下さい。</p>
90 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
92 <h2><a name="term" id="term">急な停止</a></h2>
94 <dl><dt>シグナル: TERM</dt>
95 <dd><code>apachectl -k stop</code></dd>
98 <p><code>TERM</code> あるいは <code>stop</code>
99 シグナルを親プロセスに送ると、即座に子プロセス全てを kill しようとします。
100 子プロセスを完全に kill し終わるまでに数秒かかるかもしれません。
102 処理中のリクエストは全て停止され、もはやリクエストに対する
104 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
105 <div class="section">
106 <h2><a name="graceful" id="graceful">緩やかな再起動</a></h2>
108 <dl><dt>シグナル: USR1</dt>
109 <dd><code>apachectl -k graceful</code></dd>
112 <p>親プロセスは <code>USR1</code> あるいは <code>graceful</code>
113 シグナルを受け取ると、子プロセスに現在のリクエストの処理の後に終了する
114 (あるいは何もしていなければすぐに終了する)
116 親プロセスは設定ファイルを再読込して、ログファイルを開き直します。
118 新しい<em>世代</em>の設定による子プロセスに置き換えていきます。
119 そして、これらが新たなリクエストに即座に応答し始めます。</p>
121 <div class="note">特定のプラットホームでは <code>USR1</code>
122 を緩やかな再起動のために使うことができませんが、代わりのシグナル
123 (例えば WINCH) が使用できるでしょう。
124 <code>apachectl graceful</code>
125 というコマンドはプラットホームに合ったシグナルを送ります。</div>
128 MPM のプロセス制御ディレクティブの設定を重視しますので、
129 クライアントのリクエストを扱うプロセスとスレッドの数を再起動の処理中も
130 適切な値に維持されます。。また、次のようにして
131 <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code>
133 少なくとも 1 秒後に <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> 個の新しい子プロセスが
134 生成されていなければ、その数になるように適宜プロセスを生成します。
135 この挙動は現在の負荷に対して適切な子プロセスの数と
136 <code class="directive"><a href="./mod/mpm_common.html#startservers">StartServers</a></code> パラメータでの
137 希望の数の両方を維持しようとしています。</p>
139 <p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code> を
140 使用している場合は、<code>USR1</code> シグナルが送られた際に
141 サーバ統計がゼロに<strong>設定されない</strong>ことに
143 サーバが新しいリクエストに応答不能な時間を最小にするように
144 (リクエストは OS によってキューに追加されるので絶対に紛失はしません)、
145 また同時に、希望のチューニングパラメータを守るように
147 このようにするために、世代をまたがった全子プロセスの追跡に使われている
148 <em>スコアボード</em>を維持しなければなりません。</p>
150 <p>status モジュールは、緩やかな再起動以前から開始して
151 リクエストに応答し続けている子プロセスを特定するために、
152 <code>G</code> を使うこともします。</p>
154 <p>現在、<code>USR1</code> を使うログ移動スクリプトでは、
155 再起動前の子プロセスがログを書き終わったことを確証する方法が
156 ありません。古いログに対して何かする前に、
157 <code>USR1</code> シグナルを送った後いくらか適当な時間待つことを
158 提案します。例えば、帯域の狭い通信路のユーザのリクエストのほとんどが 10
159 分以下で完了しているということが分かっていれば、
160 古いログに何かする前に 15 分待つということです。</p>
162 <div class="note">再起動時に設定ファイルに誤りがあると、
163 親プロセスは再起動せずにエラーとともに終了します。
164 緩やかな再起動の場合は、親プロセスが終了した後でも子プロセスが
166 (最後のリクエストを処理した後「緩やかに終了」する
168 サーバを再起動する際に、これが問題になるかもしれません
169 -- サーバは listen するポートにバインドできないかもしれません。
170 再起動する前に、設定ファイルの構文を <code>-t</code>
172 (<a href="programs/httpd.html">httpd</a> をご覧下さい)
174 設定ファイルの意味的な内容を構文と同様に検証したい場合は、
175 非 root ユーザで <code>httpd</code> を起動しようとすればわかります。
176 もしエラーがなければ、ソケットやログを開こうとして
178 (もしくは実行中の <code>httpd</code>
179 が既に必要なポートにバインドしているため)
181 これ以外の理由で起動に失敗したのであれば、
183 緩やかな再起動を行う前にその誤りを修正しなければなりません。</div>
184 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
185 <div class="section">
186 <h2><a name="hup" id="hup">急な再起動</a></h2>
188 <dl><dt>シグナル: HUP</dt>
189 <dd><code>apachectl -k restart</code></dd>
192 <p><code>HUP</code> あるいは <code>restart</code> シグナルを親プロセスに送ると、
193 <code>TERM</code> と同様に子プロセスを kill しますが、
195 設定ファイルを再読込して、ログファイル全てを開き直します。
196 その後、新しい子プロセスを起動して応答を続けます。</p>
198 <p><code class="module"><a href="./mod/mod_status.html">mod_status</a></code>
199 を使っている場合は、<code>HUP</code> が送られた場合に
200 サーバ統計がゼロに設定されることに注意してください。</p>
202 <div class="note">再起動時に設定ファイルに誤りがあると、
203 親プロセスは再起動せずにエラーとともに終了します。
204 これを避けるには次の方法をご覧下さい。</div>
205 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
206 <div class="section">
207 <h2><a name="race" id="race">付録: シグナルと競合状態</a></h2>
209 <p>Apache 1.2b9 以前は、再起動や停止のシグナルを含む<em>競合状態</em>
210 (競合状態を簡単に説明すると: タイミンにグよる問題で、
211 具合の悪い時間帯にちょうど何かが起こると予想外の動作をする
213 「正しい」機能を持っているアーキテクチャでは、できるだけ
214 このようなことが起こらないようにしています。
215 しかし、ある種のアーキテクチャでは競合状態は未だ確実に起こりえる
219 <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code>
221 潜在的にスコアボードが壊れる可能性があります。
223 "bind: Address already in use" (<code>HUP</code> 後) や
224 "long lost child came home!" (<code>USR1</code> 後)
227 後者はスコアボードスロットを失うだけです。
228 ですから緩やかな再起動は、たまに確実な再起動 (HUP)
230 これらの問題を克服するのは非常に難しいのですが、
231 幸いなことに大部分のアーキテクチャではスコアボードのファイルは必要ありません。
233 <code class="directive"><a href="./mod/mpm_common.html#scoreboardfile">ScoreBoardFile</a></code>
236 <p>全てのアーキテクチャにおいて、個々の子プロセスで
237 継続的な HTTP コネクション (KeepAlive)
239 リクエスト行を読んだ後、そしてリクエストヘッダを読む前に
241 これに対する修正がありますが 1.2 で修正するには発見が遅すぎました。
243 なぜなら KeepAlive のクライアントは、ネットワーク遅延や
244 サーバのタイムアウトなどに備えていなければならないからです。
246 -- テストケースでサーバを 1 秒間に 20 回再起動しても
247 クライアントは壊れた画像や空のドキュメントを受け取ることなく
250 <div class="bottomlang">
251 <p><span>Available Languages: </span><a href="./de/stopping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
252 <a href="./en/stopping.html" hreflang="en" rel="alternate" title="English"> en </a> |
253 <a href="./es/stopping.html" hreflang="es" rel="alternate" title="Español"> es </a> |
254 <a href="./ja/stopping.html" title="Japanese"> ja </a> |
255 <a href="./ko/stopping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
256 <a href="./ru/stopping.html" hreflang="ru" rel="alternate" title="Russian"> ru </a> |
257 <a href="./tr/stopping.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
258 </div><div id="footer">
259 <p class="apache">Copyright 2009 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>
260 <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>