]> granicus.if.org Git - apache/blob - docs/manual/mod/mpm_common.xml.ja
Rebuild.
[apache] / docs / manual / mod / mpm_common.xml.ja
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
4 <!-- English Revision: 674934:1792675 (outdated) -->
5
6 <!--
7  Licensed to the Apache Software Foundation (ASF) under one or more
8  contributor license agreements.  See the NOTICE file distributed with
9  this work for additional information regarding copyright ownership.
10  The ASF licenses this file to You under the Apache License, Version 2.0
11  (the "License"); you may not use this file except in compliance with
12  the License.  You may obtain a copy of the License at
13
14      http://www.apache.org/licenses/LICENSE-2.0
15
16  Unless required by applicable law or agreed to in writing, software
17  distributed under the License is distributed on an "AS IS" BASIS,
18  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  See the License for the specific language governing permissions and
20  limitations under the License.
21 -->
22
23 <modulesynopsis metafile="mpm_common.xml.meta">
24
25 <name>mpm_common</name>
26 <description>二つ以上のマルチプロセッシングモジュール (MPM)
27 で実装されているディレクティブのコレクション</description>
28 <status>MPM</status>
29
30 <directivesynopsis>
31 <name>AcceptMutex</name>
32 <description>複数の子プロセスがネットワークソケットでリクエストを
33 accept しようとしているときに、Apache がそれらの子プロセスを直列化するために
34 使う方法</description>
35 <syntax>AcceptMutex Default|<var>method</var></syntax>
36 <default>AcceptMutex Default</default>
37 <contextlist><context>server config</context></contextlist>
38 <modulelist>
39 <module>prefork</module><module>threadpool</module><module>worker</module>
40 </modulelist>
41
42 <usage>
43     <p><directive>AcceptMutex</directive> ディレクティブは、
44     ネットワークソケットのリクエストを accept しようとしている複数の子プロセスを
45     Apache が直列化するために使う方法(と必要ならロックファイルの場所)を設定します。
46     Apache 2.0 以前は、このメソッドはコンパイル時にのみ選択できました。
47     最適な方法は、アーキテクチャやプラットホームに大きく依存します。
48     詳細に関しては、<a 
49     href="../misc/perf-tuning.html">性能のチューニング</a>
50     ドキュメントをご覧下さい。</p>
51
52     <p>このディレクティブが <code>Default</code>
53     に設定されていれば、コンパイル時に選択されたデフォルト値が使われます。
54     他の使用可能なメソッドの一覧は下にあります。
55     全てのメソッドが全てのプラットホームで使用可能であるわけではない、
56     ということに注意してください。
57     使用可能でないメソッドが指定された場合は、
58     使用可能なメソッドの一覧を含んだメッセージが
59     エラーログに出力されます。</p>
60
61     <dl>
62       <dt><code>flock&lt;<var>:/path/to/lockfile</var>&gt;</code></dt>
63       <dd>オプションの <var>/path/to/lockfile</var>
64       パラメータで定義したファイルのロックに、
65       <code>flock(2)</code> システムコールを使います。
66       ロックファイルの指定には <directive module="mpm_common">LockFile</directive> 
67       ディレクティブを使うことも出来ます(非推奨です)。</dd>
68
69       <dt><code>fcntl&lt;<var>:/path/to/lockfile</var>&gt;</code></dt>
70       <dd>オプションの <var>/path/to/lockfile</var>
71       パラメータで定義したファイルのロックに、
72       <code>fcntl(2)</code> システムコールを使います。
73       ロックファイルの指定には <directive module="mpm_common">LockFile</directive> 
74       ディレクティブを使うことも出来ます(非推奨です)。</dd>
75
76       <dt><code>file&lt;<var>:/path/to/lockfile</var>&gt;</code></dt>
77       <dd>使用できるファイルロックルーチンの中で最適なものを使います。
78       具体的には、<code>fcntl</code> が使用可能な場合はそれを使い、そうでない場合は
79       <code>flock</code> を試します。
80       この設定はプラットホームと <glossary>APR</glossary> が二つのうち少なくとも
81       一つをサポートしている場合のみ使用可能です。</dd>
82
83       <dt><code>posixsem</code></dt>
84       <dd>排他処理の実装に POSIX 互換セマフォを使用します</dd>
85
86       <dt><code>sysvsem</code></dt>
87       <dd>排他処理の実装に SySV 形式のセマフォを使います。</dd>
88
89       <dt><code>sem</code></dt>
90       <dd>使用できるセマフォルーチンの中で最適なものを使います。
91       具体的には、Posix 互換セマフォが使用可能な場合はそれを使い、そうでない場合は
92       SystemV IPC 形式のセマフォを試します。
93       この設定はプラットホームと <glossary>APR</glossary> が二つのうち少なくとも
94       一つをサポートしている場合のみ使用可能です。</dd>
95
96       <dt><code>pthread</code></dt>
97       <dd>POSIX Threads (PThreads) 規格で実装されている
98       POSIX 排他処理を使います。</dd>
99
100     </dl>
101
102     <p>コンパイル時にシステムのデフォルトに選ばれたものが何かを見たい場合は、
103     <directive module="core">LogLevel</directive> を <code>debug</code>
104     に設定するとよいでしょう。デフォルトの <directive>AcceptMutex</directive>
105     が <directive module="core">ErrorLog</directive> に書き込まれます。</p>
106
107   <note type="warning"><title>警告</title>
108      <p>ほとんどのシステムにおいては、<code>pthread</code> オプションが
109      選ばれていると、子プロセスが <code>AcceptCntl</code> mutex を
110      保持しているときに異常終了した場合、サーバはリクエストへの応答を
111      停止してしまいます。これが発生した場合は、サーバを復旧させるためには
112      手動で再起動させる必要があります。</p>
113
114      <p>Solaris は例外で、Apache も使用している、子プロセスが mutex を
115      保持して異常終了した後に mutex を復旧させるための機構を提供をしています。</p>
116      <p>御使用のシステムが <code>pthread_mutexattr_setrobust_np()</code> 関数を
117      実装している場合は、<code>pthread</code> オプションを安全に使用できる
118      可能性があります。</p>
119   </note>
120 </usage>
121 </directivesynopsis>
122
123 <directivesynopsis>
124 <name>CoreDumpDirectory</name>
125 <description>Apache がコアダンプする前に移動を試みるディレクトリ
126 </description>
127 <syntax>CoreDumpDirectory <var>directory</var></syntax>
128 <default>デフォルトの設定は説明文を読んでください</default>
129 <contextlist><context>server config</context></contextlist>
130 <modulelist><module>beos</module>
131 <module>mpm_winnt</module><module>prefork</module>
132 <module>threadpool</module><module>worker</module></modulelist>
133
134 <usage>
135     <p>Apache がコアダンプする前に移動を試みるディレクトリを制御します。
136     デフォルト値は <directive module="core">ServerRoot</directive>
137     ディレクトリですが、このディレクトリはサーバの実行されているユーザ権限で
138     書き込み可能であるべきではないので、通常はコアダンプは書き込まれません。
139     デバッグのためにコアダンプが必要であれば、
140     このディレクティブを使って他の位置にコアダンプを書き出すようにできます。</p>
141
142     <note><title>Linux でのコアダンプ</title>
143       <p>Apache が root として起動されて、別のユーザの権限に以降した場合は
144       Linux のカーネルはディレクトリがプロセスの権限で書き込み可能な場合でさえも
145       コアダンプを<em>無効</em>にします。Apache (2.0.46 以降) は
146       Linux 2.4 以降ではコアダンプを行なうように再指定しますが、それは
147       <directive>CoreDumpDirectory</directive> を明示的に設定したときに
148       限ります。</p>
149     </note>
150 </usage>
151 </directivesynopsis>
152
153 <directivesynopsis>
154 <name>EnableExceptionHook</name>
155 <description>クラッシュの後に例外ハンドラを実行するフックを有効にする</description>
156 <syntax>EnableExceptionHook On|Off</syntax>
157 <default>EnableExceptionHook Off</default>
158 <contextlist><context>server config</context></contextlist>
159 <modulelist>
160 <module>prefork</module><module>threadpool</module>
161 <module>worker</module></modulelist>
162 <compatibility>2.0.49 以降</compatibility>
163
164 <usage>
165     <p>安全上の理由から、<code>--enable-exception-hook</code> configure
166     オプションを有効にした場合にのみ、このディレクティブを利用できます。
167     外部モジュールをプラグインして、子がクラッシュした後に何か実行できるような
168     フックを有効にします。</p>
169     
170     <p>このような外部モジュールは、既に二つ存在していて、
171     <code>mod_whatkilledus</code> と <code>mod_backtrace</code>
172     がこのフックを活用します。これらの詳細については Jeff Trawick 
173     さんの <a href="http://www.apache.org/~trawick/exception_hook.html"
174     >EnableExceptionHook site</a> を参照してください。</p>
175 </usage>
176 </directivesynopsis>
177
178 <directivesynopsis>
179 <name>GracefulShutdownTimeout</name>
180 <description>穏やかな停止をかけた後、終了するまで待つ時間</description>
181 <syntax>GracefulShutDownTimeout <var>seconds</var></syntax>
182 <default>GracefulShutDownTimeout 0</default>
183 <contextlist><context>server config</context></contextlist>
184 <modulelist><module>prefork</module><module>worker</module>
185 <module>event</module></modulelist>
186 <compatibility>2.2 以降</compatibility>
187
188 <usage>
189     <p><directive>GracefulShutdownTimeout</directive> には
190     サーバーが "graceful-stop" シグナルを受け取ってから現在の
191     リクエストの処理を最大で何秒間続けるかを指定します。</p>
192
193     <p>この値をゼロに設定すると、処理中として残っているリクエストが
194     全て完了するまでサーバーは終了しません。</p>
195 </usage>
196 </directivesynopsis>
197
198 <directivesynopsis>
199 <name>Group</name>
200 <description>リクエストに応答する際に所属するグループ</description>
201 <syntax>Group <var>unix-group</var></syntax>
202 <default>Group #-1</default>
203 <contextlist><context>server config</context></contextlist>
204 <modulelist><module>beos</module>
205 <module>mpmt_os2</module><module>prefork</module>
206 <module>threadpool</module><module>worker</module></modulelist>
207 <compatibility>Apache 2.0 以降で、グローバル設定でのみ有効です。</compatibility>
208
209 <usage>
210     <p><directive>Group</directive> ディレクティブで、
211     リクエストに応答する際に所属しておくグループを設定します。
212     このディレクティブを使用するためには、
213     サーバは最初に <code>root</code> 権限で起動されている必要があります。
214     非 root ユーザでサーバを起動した場合は、指定したグループに変化できずに、
215     結果的に起動したユーザの属するグループで実行されることになります。
216     <var>unix-group</var> は次のうちのいずれかです:</p>
217
218     <dl>
219       <dt>グループ名</dt>
220       <dd>グループを名前で参照します</dd>
221
222       <dt><code>#</code> に続いてグループ番号</dt>
223       <dd>グループを番号で参照します。</dd>
224     </dl>
225
226     <example><title>例</title>
227       Group www-group
228     </example>
229
230     <p>サーバを実行するために特定の新しいグループを設定することを
231     お薦めします。<code>nobody</code> を使用する管理者もいますが、
232     可能であったり望ましい訳では必ずしもありません。</p>
233
234     <note type="warning"><title>セキュリティ</title>
235       <p>正確にどんなことをやっているのか、その危険性を知らないで、
236       <directive>Group</directive> (や <directive
237       module="mpm_common">User</directive>) を
238       <code>root</code> に 設定しないでください。</p>
239     </note>
240
241     <p>特記事項: このディレクティブを
242     <directive module="core" type="section">VirtualHost</directive>
243     で使用することはサポートされなくなりました。Apache 2.0 で
244     <program>suexec</program> を設定したい場合は、
245     <directive module="mod_suexec">SuexecUserGroup</directive>
246     を使用してください。</p>
247
248     <note><title>注意</title>
249       <p><directive>Group</directive> ディレクティブは
250       <module>beos</module> と <module>mpmt_os2</module> MPM
251       にも存在しますが、実質的に無効で、互換性のためだけに存在します。</p>
252     </note>
253 </usage>
254 </directivesynopsis>
255
256 <directivesynopsis>
257 <name>PidFile</name>
258 <description>デーモンのプロセス ID
259 をサーバが記録するためのファイル</description>
260 <syntax>PidFile <var>filename</var></syntax>
261 <default>PidFile logs/httpd.pid</default>
262 <contextlist><context>server config</context></contextlist>
263 <modulelist><module>beos</module>
264 <module>mpm_winnt</module><module>mpmt_os2</module>
265 <module>prefork</module>
266 <module>threadpool</module><module>worker</module></modulelist>
267
268 <usage>
269     <p><directive>PidFile</directive> ディレクティブで、
270     デーモンのプロセス ID をサーバが記録するファイルを設定します。
271     ファイル名が絶対パスでない場合は、
272     <directive module="core">ServerRoot</directive>
273     からの相対的なものとして扱われます。</p>
274
275     <example><title>例</title>
276     PidFile /var/run/apache.pid
277     </example>
278
279     <p>サーバが <directive module="core">ErrorLog</directive>
280     や <directive module="mod_log_config">TransferLog</directive>
281     を閉じて開き直したり、設定ファイルを
282     再読込したりさせるために、サーバにシグナルを送ることができると
283     便利なことがあります。
284     これは SIGHUP (kill -1) シグナルを <directive>PidFile</directive>
285     に書かれているプロセス ID に送ることでできます。</p>
286
287     <p><directive>PidFile</directive> には、ログファイルの設置位置や
288     <a href="../misc/security_tips.html#serverroot">セキュリティ</a>
289     と全く同じ注意点があります。</p>
290
291     <note><title>注意</title>
292       <p>Apache 2 では、
293       <program>apachectl</program>
294       スクリプトのみを使用してサーバの (再) 起動や停止を
295       行なうことを推奨しています。</p>
296     </note>
297 </usage>
298 </directivesynopsis>
299
300 <directivesynopsis>
301 <name>Listen</name>
302 <description>サーバが listen するIP アドレスとポート番号</description>
303 <syntax>Listen [<var>IP-address</var>:]<var>portnumber</var> [<var>protocol</var>]</syntax>
304 <contextlist><context>server config</context></contextlist>
305 <modulelist><module>beos</module>
306 <module>mpm_netware</module><module>mpm_winnt</module>
307 <module>mpmt_os2</module>
308 <module>prefork</module><module>threadpool</module><module>worker</module>
309 <module>event</module>
310 </modulelist>
311 <compatibility>Apache 2.0 から必須ディレクティブ。<var>protocol</var>
312 引数は 2.1.5 で追加。</compatibility>
313
314 <usage>
315     <p><directive>Listen</directive> ディレクティブは Apache
316     が特定の IP アドレスやポート番号だけを listen するように指定します。
317     デフォルトでは全ての IP インターフェースのリクエストに応答します。
318     <directive>Listen</directive> ディレクティブは
319     現在は必須のディレクティブとなりました。
320     もし設定ファイルになければ、サーバは起動に失敗します。
321     これは以前のバージョンの Apache から変更のあった部分です。</p>
322
323     <p><directive>Listen</directive> ディレクティブでは、特定のポートあるいは
324     アドレスとポートの組み合わせから入ってくるリクエストに対して
325     応答するように指定します。
326     もしポート番号だけが指定された場合は、サーバは全インターフェースの
327     指定されたポート番号に対して listen します。
328     IP アドレスがポートとともに指定された場合は、
329     サーバは指定されたポートとインターフェースに対して listen 
330     します。</p>
331
332     <p>複数のアドレスとポートに対して listen するように、
333     複数の <directive>Listen</directive> ディレクティブを使うこともできます。
334     サーバは列挙されたアドレスとポート全てからのリクエストに対して
335     応答します。</p>
336
337     <p>例えば、サーバが 80 番ポートと 8000 番ポートの両方の
338     コネクションを受け入れる場合は、次のようにします。</p>
339
340     <example>
341        Listen 80<br />
342        Listen 8000
343     </example>
344
345     <p>二つの特定のインターフェースとポート番号からのコネクションを
346     受け入れるようにするには、次のようにします。</p>
347
348     <example>
349        Listen 192.170.2.1:80<br />
350        Listen 192.170.2.5:8000
351     </example>
352
353     <p>IPv6 アドレスは角括弧で囲まなければなりません。
354     例えば次の例のようにです。</p>
355
356     <example>
357        Listen [2001:db8::a00:20ff:fea7:ccea]:80
358     </example>
359
360     <p><var>protocol</var> オプション引数は通常の設定では必要ありません。
361        無指定の場合、443 番ポートには <code>https</code> が、他のポートには
362        <code>http</code> がデフォルト値として使用されます。
363        protocol 指定は、どのモジュールがリクエストを処理するかを決定し、
364        <directive module="core">AcceptFilter</directive> 
365        によるプロトコル特有の最適化を行うようにします。</p>
366
367     <p>非標準なポートで運用している際にのみ protocol 指定が必要になります。
368        たとえば <code>https</code> なサイトを 8443 番ポートで運用している場合 :</p>
369
370     <example>
371       Listen 192.170.2.1:8443 https
372     </example>
373
374     <note><title>エラー条件</title>
375       同一 IP アドレスとポートの組に、複数の <directive>Listen</directive> 
376       ディレクティブを指定してしまうと、<code>Address already in use</code> 
377       というエラーメッセージを受けることになります。
378     </note>
379
380 </usage>
381
382 <seealso><a href="../dns-caveats.html">DNS の問題</a></seealso>
383 <seealso><a href="../bind.html">Apache
384 が使用するアドレスとポートの設定</a></seealso>
385 </directivesynopsis>
386
387 <directivesynopsis>
388 <name>ListenBackLog</name>
389 <description>保留状態のコネクションのキューの最大長</description>
390 <syntax>ListenBacklog <var>backlog</var></syntax>
391 <default>ListenBacklog 511</default>
392 <contextlist><context>server config</context></contextlist>
393 <modulelist><module>beos</module>
394 <module>mpm_netware</module><module>mpm_winnt</module>
395 <module>mpmt_os2</module><module>prefork</module>
396 <module>threadpool</module><module>worker</module></modulelist>
397
398 <usage>
399     <p>保留状態のコネクションのキューの最大長です。
400     一般的には調整する必要はありませんし、調整は望ましくありません。
401     しかし、TCP SYN フラッドアタックの状況下におかれる場合に、
402     増やした方が望ましいシステムもあります。
403     <code>listen(2)</code> システムコールのバックログパラメータを
404     ご覧下さい。</p>
405
406     <p>この値は OS により、小さな数に抑えられます。
407     値は OS 毎に異なっています。また多くの OS では、
408     バックログとして指定されている値ちょうどまで使っているわけではなく、
409     設定されている値に基づいて (通常は設定値よりも大きな値を)
410     使っていることに注意してください。</p>
411 </usage>
412 </directivesynopsis>
413
414 <directivesynopsis>
415 <name>LockFile</name>
416 <description>受付を直列化するためのロックファイルの位置<em>(非推奨)</em></description>
417 <syntax>LockFile <var>filename</var></syntax>
418 <default>LockFile logs/accept.lock</default>
419 <contextlist><context>server config</context></contextlist>
420 <modulelist>
421 <module>prefork</module><module>threadpool</module><module>worker</module>
422 </modulelist>
423
424 <usage>
425     <p><directive module="mpm_common">AcceptMutex</directive>
426     が <code>fcntl</code> や <code>flock</code>
427     に設定されて使用されている場合に、使用されるロックファイルへのパスを
428     <directive>LockFile</directive> ディレクティブで設定します。
429     このディレクティブは通常はそのままにしておきます。
430     主に <code>logs</code> ディレクトリが NFS
431     でマウントされている場合などに値を変えます。
432     なぜなら<strong>ロックファイルはローカルディスクに
433     保存されなければならない</strong>からです。
434     メインサーバプロセスの PID がファイル名に自動的に付加されます。</p>
435
436     <note type="warning"><title>セキュリティ</title>
437       <p><code>/var/tmp</code>
438       といった、誰でも書き込めるディレクトリにファイルを
439       <em>置かない</em>方がよいです。なぜなら、サーバが起動時に作成する
440       ロックファイルの作成自体を妨害することによって、
441       誰でもサービス拒否アタックを引き起こすことができるからです。</p>
442     </note>
443     <note type="warning"><title>非推奨</title>
444       <p>このディレクティブは非推奨です。 <directive 
445       module="mpm_common">AcceptMutex</directive>
446       ディレクティブで排他処理の方法の指定とともにロックファイルの場所も指定してください。</p>
447     </note>
448
449 </usage>
450 <seealso><directive module="mpm_common">AcceptMutex</directive></seealso>
451 </directivesynopsis>
452
453 <directivesynopsis>
454 <name>MaxClients</name>
455 <description>リクエストに応答するために作成される
456 子プロセスの最大個数</description>
457 <syntax>MaxClients <var>number</var></syntax>
458 <default>詳細は使用法をご覧下さい。</default>
459 <contextlist><context>server config</context></contextlist>
460 <modulelist><module>beos</module>
461 <module>prefork</module><module>threadpool</module><module>worker</module>
462 </modulelist>
463
464 <usage>
465     <p><directive>MaxClients</directive> ディレクティブは、
466     応答することのできる同時リクエスト数を設定します。
467     <directive>MaxClients</directive> 制限数を越えるコネクションは通常、
468     <directive module="mpm_common">ListenBacklog</directive>
469     ディレクティブで設定した数までキューに入ります。
470     他のリクエストの最後まで達して子プロセスが空くと、
471     次のコネクションに応答します。</p>
472
473     <p>スレッドを用いないサーバ (<em>すなわち</em> <module>prefork</module>)
474     では、<directive>MaxClients</directive>
475     は、リクエストに応答するために起動される
476     子プロセスの最大数となります。
477     デフォルト値は <code>256</code> で、これを増加させたい場合は、
478     <directive module="mpm_common">ServerLimit</directive>
479     の値も増加させる必要があります。</p>
480
481     <p>スレッドを用いるサーバや、ハイブリッドサーバ (<em>すなわち</em>
482     <module>beos</module> <module>worker</module>)
483     では、<directive>MaxClients</directive> 
484     は、クライアントに応答できるスレッドの総数を制限します。
485     <module>beos</module> でのデフォルト値は <code>50</code> です。
486     ハイブリッド MPM でのデフォルト値は <code>16</code>
487     <directive module="mpm_common">ServerLimit</directive>
488     の <code>25</code> 倍 (<directive
489     module="mpm_common">ThreadsPerChild</directive>) です。
490     <directive>MaxClients</directive>
491     を 16 プロセス以上必要な値まで増加させたい場合は、
492     <directive module="mpm_common">ServerLimit</directive>
493     も増加させる必要があります。</p>
494 </usage>
495 </directivesynopsis>
496
497 <directivesynopsis>
498 <name>MaxMemFree</name>
499 <description><code>free()</code> が呼ばれない限り、
500 主メモリアロケータが保持し続けられるメモリの最大量</description>
501 <syntax>MaxMemFree <var>KBytes</var></syntax>
502 <default>MaxMemFree 0</default>
503 <contextlist><context>server config</context></contextlist>
504 <modulelist><module>beos</module>
505 <module>mpm_netware</module><module>prefork</module>
506 <module>threadpool</module><module>worker</module><module>mpm_winnt</module></modulelist>
507
508 <usage>
509     <p><directive>MaxMemFree</directive> ディレクティブは
510     <code>free()</code> が呼ばれない限り、
511     主アロケータが保持できる空のメモリの最大値をキロバイト単位で設定します。
512     設定されていないか、零に設定されているときは、無制限になります。</p>
513 </usage>
514 </directivesynopsis>
515
516 <directivesynopsis>
517 <name>MaxRequestsPerChild</name>
518 <description>個々の子サーバが稼働中に扱うリクエスト数の上限</description>
519 <syntax>MaxRequestsPerChild <var>number</var></syntax>
520 <default>MaxRequestsPerChild 10000</default>
521 <contextlist><context>server config</context></contextlist>
522 <modulelist><module>mpm_netware</module>
523 <module>mpm_winnt</module><module>mpmt_os2</module>
524 <module>prefork</module>
525 <module>threadpool</module><module>worker</module></modulelist>
526
527 <usage>
528     <p><directive>MaxRequestsPerChild</directive> ディレクティブは、
529     個々の子サーバプロセスが扱うことのできるリクエストの制限数を
530     設定します。<directive>MaxRequestsPerChild</directive>
531     個のリクエストの後に、子プロセスは終了します。
532     <directive>MaxRequestsPerChild</directive> が <code>0</code>
533     に設定されている場合は、プロセスは期限切れにより終了することはありません。</p>
534
535     <note><title>その他のデフォルト値</title>
536       <p><module>mpm_netware</module> と <module>mpm_winnt</module>
537       でのデフォルト値は <code>0</code> です。</p>
538     </note>
539
540     <p><directive>MaxRequestsPerChild</directive>
541     を非ゼロにすることにより、(偶発的な) メモリーリークが起こった場合に
542     プロセスが消費するメモリの総量を制限できます。</p>
543
544     <note><title>注</title>
545       <p><directive module="core">KeepAlive</directive> リクエストの場合は、
546       一つ目のリクエストだけがこの制限に該当します。
547       実効的には、一つの子プロセスあたりの<em>コネクション</em>数を
548       制限するように挙動が変化します。</p>
549     </note>
550 </usage>
551 </directivesynopsis>
552
553 <directivesynopsis>
554 <name>MaxSpareThreads</name>
555 <description>アイドルスレッドの最大数</description>
556 <syntax>MaxSpareThreads <var>number</var></syntax>
557 <default>詳細は使用法をご覧下さい。</default>
558 <contextlist><context>server config</context></contextlist>
559 <modulelist><module>beos</module>
560 <module>mpm_netware</module><module>mpmt_os2</module>
561 <module>threadpool</module><module>worker</module>
562 </modulelist>
563
564 <usage>
565     <p>アイドルなスレッドの最大数です。異なる MPM ではそれぞれ、
566     このディレクティブは異なる取り扱われ方をされます。</p>
567
568     <p><module>worker</module>, 
569     <module>threadpool</module> では、
570     デフォルトは <code>MaxSpareThreads 250</code> です。
571     この MPM はアイドルスレッド数をサーバ全体で監視します。
572     サーバでアイドルスレッド数が多すぎる場合は、
573     この数字よりも少ない数になるまで子プロセスを終了します。</p>
574
575     <p><module>mpm_netware</module> では、
576     デフォルトは <code>MaxSpareThreads 100</code> です。
577     この MPM はシングルプロセスで実行されますので、
578     スペアスレッド数もサーバ全体で勘定します。</p>
579
580     <p><module>beos</module> と <module>mpmt_os2</module> は
581     <module>mpm_netware</module> と似た挙動をします。
582     <module>beos</module> でのデフォルト値は <code>MaxSpareThreads 50</code>
583     です。<module>mpmt_os2</module> でのデフォルト値は <code>10</code>
584     です。</p>
585
586     <note><title>制限事項</title>
587       <p><directive>MaxSpareThreads</directive> の取る値には制限があります。
588       Apache は次の規則に従って自動的に補正します。</p>
589       <ul>
590         <li><module>mpm_netware</module> は
591         <directive module="mpm_common">MinSpareThreads</directive>
592         よりも大きい必要があります。</li>
593
594         <li><module>threadpool</module>, 
595         <module>worker</module> では、
596         <directive module="mpm_common">MinSpareThreads</directive> と
597         <directive module="mpm_common">ThreadsPerChild</directive>
598         で決まる総和と等しいか大きい必要があります。</li>
599       </ul>
600     </note>
601 </usage>
602 <seealso><directive module="mpm_common">MinSpareThreads</directive></seealso>
603 <seealso><directive module="mpm_common">StartServers</directive></seealso>
604 </directivesynopsis>
605
606 <directivesynopsis>
607 <name>MinSpareThreads</name>
608 <description>リクエストに応答することのできる
609 アイドルスレッド数の最小数</description>
610 <syntax>MinSpareThreads <var>number</var></syntax>
611 <default>詳細は使用方法をご覧下さい。</default>
612 <contextlist><context>server config</context></contextlist>
613 <modulelist><module>beos</module>
614 <module>mpm_netware</module><module>mpmt_os2</module>
615 <module>threadpool</module><module>worker</module>
616 </modulelist>
617
618 <usage>
619     <p>リクエストに応答するスレッド数の最小値です。
620     異なる MPM ではそれぞれ、
621     このディレクティブは異なる取り扱われ方をします。</p>
622
623     <p><module>worker</module>,
624     <module>threadpool</module> では、
625     デフォルトは <code>MinSpareThreads 75</code> で、
626     アイドルスレッド数をサーバ全体で監視します。
627     もしサーバに十分な数のアイドルスレッドがなければ、
628     アイドルスレッド数がこの数 <var>number</var> よりも大きくなるまで
629     新しい子プロセスが生成されます。</p>
630
631     <p><module>mpm_netware</module> では、
632     デフォルトは <code>MinSpareThreads 10</code> で、
633     シングルプロセス MPM ですので、サーバ全体で管理されます。</p>
634
635     <p><module>beos</module> と <module>mpmt_os2</module> は、
636     <module>mpm_netware</module>によく似ています。
637     <module>beos</module> でのデフォルトは <code>MinSpareThreads 1</code>
638     です。<module>mpmt_os2</module> でのデフォルトは
639     <code>5</code> です。</p>
640 </usage>
641 <seealso><directive module="mpm_common">MaxSpareThreads</directive></seealso>
642 <seealso><directive module="mpm_common">StartServers</directive></seealso>
643 </directivesynopsis>
644
645 <directivesynopsis>
646 <name>ScoreBoardFile</name>
647 <description>子プロセスと連携するためのデータを保存する
648 ファイルの位置</description>
649 <syntax>ScoreBoardFile <var>file-path</var></syntax>
650 <default>ScoreBoardFile logs/apache_status</default>
651 <contextlist><context>server config</context></contextlist>
652 <modulelist><module>beos</module>
653 <module>mpm_winnt</module><module>prefork</module>
654 <module>threadpool</module><module>worker</module></modulelist>
655
656 <usage>
657     <p>Apache は親プロセスと子プロセス間の通信にスコアボードを用います。
658     この通信機能にファイルを必要とするアーキテクチャもあります。
659     ファイルが指定されていなければ、Apache はまずメモリ上
660     (匿名共有メモリ) にスコアボードを作ろうとし、それが失敗すると
661     ディスク上にファイル (ファイルベースの共有メモリ) を作ろうとします。
662     このディレクティブを指定すると、Apache
663     は必ずディスクにファイルを生成します。</p>
664
665     <example><title>例</title>
666       ScoreBoardFile /var/run/apache_status
667     </example>
668
669     <p>ファイルベースの共有メモリは、サードパーティー製のアプリケーションで
670     スコアボードに直接アクセスする必要がある場合に役に立ちます。</p>
671
672     <p><directive>ScoreBoardFile</directive> を使う場合、
673     RAM ディスク上に置くとスピードが向上するでしょう。
674     しかし、ログファイルの設置位置や
675     <a href="../misc/security_tips.html">セキュリティ</a>
676     と同様の注意点があるので、注意してください。</p>
677 </usage>
678 <seealso><a href="../stopping.html">Apache の停止と再起動</a></seealso>
679 </directivesynopsis>
680
681 <directivesynopsis>
682 <name>ReceiveBufferSize</name>
683 <description>TCP 受信バッファサイズ</description>
684 <syntax>ReceiveBufferSize <var>bytes</var></syntax>
685 <default>ReceiveBufferSize 0</default>
686 <contextlist><context>server config</context></contextlist>
687 <modulelist><module>beos</module>
688 <module>mpm_netware</module><module>mpm_winnt</module>
689 <module>mpmt_os2</module><module>prefork</module>
690 <module>worker</module></modulelist>
691
692 <usage>
693     <p>サーバは TCP 受信バッファサイズを指定されたバイト数に設定します。</p>
694
695     <p><code>0</code>にした場合、OS のデフォルト値が使用されます。</p>
696 </usage>
697 </directivesynopsis>
698
699 <directivesynopsis>
700 <name>SendBufferSize</name>
701 <description>TCP バッファサイズ</description>
702 <syntax>SendBufferSize <var>bytes</var></syntax>
703 <default>SendBufferSize 0</default>
704 <contextlist><context>server config</context></contextlist>
705 <modulelist><module>beos</module>
706 <module>mpm_netware</module><module>mpm_winnt</module>
707 <module>mpmt_os2</module><module>prefork</module>
708 <module>threadpool</module><module>worker</module></modulelist>
709
710 <usage>
711     <p>サーバは TCP 送信バッファサイズを指定されたバイト数に設定します。
712     高速で高レイテンシな環境で
713     (<em>例</em> 100ms 程度、大陸横断高速通信路など)
714     古い一般的な OS のデフォルト値を増やすのに非常に便利です。</p>
715
716     <p><code>0</code>にした場合、OS のデフォルト値が使用されます。</p>
717 </usage>
718 </directivesynopsis>
719
720 <directivesynopsis>
721 <name>ServerLimit</name>
722 <description>設定可能なサーバプロセス数の上限</description>
723 <syntax>ServerLimit <var>number</var></syntax>
724 <default>詳細は使用法を参照</default>
725 <contextlist><context>server config</context></contextlist>
726 <modulelist>
727 <module>prefork</module><module>threadpool</module><module>worker</module>
728 </modulelist>
729
730 <usage>
731     <p><module>prefork</module> MPM の場合は、このディレクティブは
732     Apache プロセス稼働中における
733     <directive module="mpm_common">MaxClients</directive>
734     に設定可能な上限値を設定することになります
735     <transnote>prefork の場合は同時クライアント数 = サーバプロセス数なので</transnote>。
736     <module>worker</module> MPM の場合には、このディレクティブは
737     <directive module="mpm_common">ThreadLimit</directive>
738     ディレクティブと組み合わせて、
739     Apache プロセス稼働中における
740     <directive module="mpm_common">MaxClients</directive>
741     に設定可能な上限値を設定することになります。
742     このディレクティブを変更して再起動<transnote>apachectl
743     restart</transnote>しても無視されますが、
744     <directive module="mpm_common">MaxClients</directive>
745     は再起動で変更することができます。
746     </p>
747
748     <p>このディレクティブを使用する際は特に注意してください。
749     <directive>ServerLimit</directive> が必要以上に大きな値に
750     設定された場合は、余計な未使用共有メモリが割り当てられます。
751     <directive>ServerLimit</directive> と
752     <directive module="mpm_common">MaxClients</directive>
753     がシステムの扱える範囲を越えた設定値になっていると、
754     Apache は起動しないか、起動しても不安定になるでしょう。</p>
755
756     <p><module>prefork</module> MPM では、
757     <directive module="mpm_common">MaxClients</directive>
758     を 256 (デフォルト) よりも大きな値に設定する必要がある時にだけ使用してください。
759     希望の <directive module="mpm_common">MaxClients</directive>
760     数とくらべて、必要以上に大きな値を指定することは避けてください。</p>
761
762     <p><module>worker</module>,
763     <module>threadpool</module> MPM では、
764     <directive module="mpm_common">MaxClients</directive> と
765     <directive module="mpm_common">ThreadsPerChild</directive>
766     の設定で 16 サーバプロセス (デフォルト) 
767     以上必要になる場合にのみ使用してください。希望の
768     <directive module="mpm_common">MaxClients </directive> と
769     <directive module="mpm_common">ThreadsPerChild</directive>
770     とくらべて、必要となるサーバプロセス数以上に大きな値を
771     設定することは避けてください。</p>
772
773     <note><title>注意</title>
774       <p><code>ServerLimit 20000</code> という制限付きでコンパイルされています
775       (<module>prefork</module> MPM では <code>200000</code>) 。
776       これはスペルミスによって誤って酷い状況になるのを、
777       回避するための処置です。</p>
778     </note>
779 </usage>
780 <seealso><a href="../stopping.html">Apache の停止と再起動</a></seealso>
781 </directivesynopsis>
782
783 <directivesynopsis>
784 <name>StartServers</name>
785 <description>起動時に生成される子サーバプロセスの数</description>
786 <syntax>StartServers <var>number</var></syntax>
787 <default>詳細は使用方法を参照</default>
788 <contextlist><context>server config</context></contextlist>
789 <modulelist><module>mpmt_os2</module>
790 <module>prefork</module><module>threadpool</module><module>worker</module>
791 </modulelist>
792
793 <usage>
794     <p><directive>StartServers</directive> ディレクティブは、
795     起動時に生成される子サーバプロセスの数を設定します。
796     プロセス数は負荷に応じて動的に制御されますので、
797     通常はこの値を調整する理由はあまりないでしょう。</p>
798
799     <p>デフォルト値は MPM ごとに異なります。
800     <module>threadpool</module>, 
801     <module>worker</module> は <code>StartServers 3</code> です。
802     <module>prefork</module> は <code>5</code> で、
803     <module>mpmt_os2</module> は <code>2</code> です。</p>
804 </usage>
805 </directivesynopsis>
806
807 <directivesynopsis>
808 <name>StartThreads</name>
809 <description>起動時に生成されるスレッドの数</description>
810 <syntax>StartThreads <var>number</var></syntax>
811 <default>詳細は使用方法を参照</default>
812 <contextlist><context>server config</context></contextlist>
813 <modulelist><module>beos</module><module>mpm_netware</module>
814 </modulelist>
815
816 <usage>
817     <p>起動時に生成されるスレッドの数です。
818     スレッド数は負荷に応じて動的に制御されますので、
819     通常はこの値を調整する理由はあまりないでしょう。</p>
820
821     <p><module>mpm_netware</module> でのデフォルトは
822     <code>StartThreads 50</code> で、
823     この場合プロセスは一つしかないので、
824     起動時にリクエストに応答するスレッドの総数となります。</p>
825
826     <p><module>beos</module> でのデフォルトは <code>StartThreads
827     10</code> です。
828     また、起動時に生成されるスレッドの総数にも反映されます。</p>
829 </usage>
830 </directivesynopsis>
831
832 <directivesynopsis>
833 <name>ThreadLimit</name>
834 <description>設定可能な子プロセス毎のスレッド数の上限を
835 設定します</description>
836 <syntax>ThreadLimit <var>number</var></syntax>
837 <default>詳細は使用方法を参照</default>
838 <contextlist><context>server config</context></contextlist>
839 <modulelist><module>mpm_winnt</module>
840 <module>threadpool</module><module>worker</module>
841 </modulelist>
842 <compatibility>Apache 2.0.41 とそれ以降の <module>mpm_winnt</module> 
843 で利用可能</compatibility>
844
845 <usage>
846     <p>このディレクティブは
847     Apache プロセス稼働中における
848     <directive module="mpm_common">ThreadsPerChild</directive>
849     に設定可能な上限値を設定します。再起動時にこのディレクティブの値を
850     変更しても無視されますが、
851     <directive module="mpm_common">ThreadsPerChild</directive>
852     は再起動中に、このディレクティブで指定された上限値まで
853     変更することができます。</p>
854
855     <p>このディレクティブを使用する際は特に注意してください。
856     <directive>ThreadLimit</directive> が
857     <directive module="mpm_common">ThreadsPerChild</directive>
858     よりもずっと大きな値に設定された場合は、
859     余計な未使用共有メモリが割り当てられてしまいます。
860     <directive>ThreadLimit</directive> が
861     <directive module="mpm_common">ThreadsPerChild</directive>
862     の両方がシステムの扱える範囲を超えている場合は、
863     Apache は起動しないか、起動したとしても不安定になるでしょう。
864     このディレクティブの値は今使用している Apache の <directive
865     module="mpm_common">ThreadsPerChild</directive> の予想上限値を
866     超えた値には設定しないでください。
867     </p>
868
869     <p><directive>ThreadLimit</directive> のデフォルト値は
870     <module>mpm_winnt</module> のときは <code>1920</code> で、
871     他の場合は <code>64</code> です。</p>
872
873     <note><title>注意</title>
874       <p><code>ThreadLimit 20000</code> (<module>mpm_winnt</module>
875       の場合は <code>ThreadLimit 15000</code> )
876       という制限付きでコンパイルされています。
877       これはスペルミスによって誤って酷い状況になるのを、
878       回避するための処置です。</p>
879     </note>
880 </usage>
881 </directivesynopsis>
882
883 <directivesynopsis>
884 <name>ThreadsPerChild</name>
885 <description>子プロセスそれぞれに生成されるスレッド数</description>
886 <syntax>ThreadsPerChild <var>number</var></syntax>
887 <default>詳細は使用方法を参照</default>
888 <contextlist><context>server config</context></contextlist>
889 <modulelist><module>mpm_winnt</module>
890 <module>threadpool</module><module>worker</module></modulelist>
891
892 <usage>
893     <p>このディレクティブは、それぞれの子プロセスで生成される
894     スレッド数を設定します。
895     子プロセスは開始時にこれらのスレッドを生成して、
896     その後は生成しません。<module>mpm_winnt</module> のような、
897     子プロセスが一つしかないような MPM を利用しているのであれば、
898     この値はサーバの負荷全体を十分取り扱える程度に、
899     大きくなければなりません。<module>worker</module> のような、
900     子プロセスが複数あるような MPM を利用しているのであれば、
901     サーバの通常負荷を十分扱える程度に、
902     <em>スレッド総数</em>が多くなければなりません。</p>
903
904     <p><module>mpm_winnt</module>での <directive>ThreadsPerChild</directive>
905     のデフォルト値は <code>64</code> で、他の場合は
906     <code>25</code> です。</p>
907 </usage>
908 </directivesynopsis>
909
910 <directivesynopsis>
911 <name>ThreadStackSize</name>
912 <description>クライアントのコネクションを受け持つスレッドが使用する
913 スタックのバイト数</description> 
914 <syntax>ThreadStackSize <var>size</var></syntax>
915 <default>NetWare では 65536。他の OS では違った値</default>
916 <contextlist><context>server config</context></contextlist>
917 <modulelist><module>mpm_netware</module>
918 <module>mpm_winnt</module>
919 <module>threadpool</module><module>worker</module>
920 </modulelist>
921 <compatibility>2.1 以降</compatibility>
922
923 <usage>
924     <p>クライアントコネクションを受け持ち、コネクション処理に必要なモジュールの
925     呼び出しを行なっているスレッドの、(自動変数用の) スタックサイズは
926     <directive>ThreadStackSize</directive> ディレクティブで指定します。
927     大抵の場合 OS の指定しているスタックサイズのデフォルト値は
928     適切なものですが、調整が必要になる場合もあります:</p>
929
930     <ul>
931       <li>スレッドスタックサイズのデフォルト値が比較的小さく設定されている
932       プラットホーム (例えば HP-UX) では、自動変数用の領域で大きな容量を
933       使用するサードパーティ製モジュールのために Apache がクラッシュする
934       場合もあります。そのモジュールは他のプラットホームでは
935       スタックサイズが大きいために、快調に動作するかもしれません。
936       このタイプのクラッシュは、<directive>ThreadStackSize</directive>
937       で OS のデフォルト値より大きな値を指定することで解決します。
938       サードパーティ製モジュールでこの処置が必要であると記載されている
939       場合か、Apache の出力するメッセージでスレッドスタックサイズが
940       小さすぎると指摘されている場合にのみ、この調整をしてください。</li>
941
942       <li>デフォルトスレッドスタックサイズが、Web サーバ用途に必要な量よりも
943       明らかに大きすぎる場合、<directive>ThreadStackSize</directive> 
944       を OS のデフォルト値よりも小さな値にすることで、子プロセスあたりの
945       スレッド数をより多く持たせられるようになります。
946       このタイプの調整は、テスト環境でウェブサーバを完全に
947       テストできる場合に限って行なうべきです。
948       まれに多数のスタックが要求されるリクエストを受けることがあるかも
949       しれないからです。
950       Web サーバの設定を変更すると、現在の <directive>ThreadStackSize</directive> 
951       の設定が取り消される場合があります。</li>
952     </ul>
953 </usage>
954 </directivesynopsis>
955
956 <directivesynopsis>
957 <name>User</name>
958 <description>リクエストに応答する際に用いるユーザ ID</description>
959 <syntax>User <var>unix-userid</var></syntax>
960 <default>User #-1</default>
961 <contextlist><context>server config</context></contextlist>
962 <modulelist>
963 <module>prefork</module><module>threadpool</module><module>worker</module>
964 </modulelist>
965 <compatibility>Apache 2.0 以降で、グローバル設定でのみ有効です。
966 </compatibility>
967
968 <usage>
969     <p><directive>User</directive> ディレクティブは
970     サーバがリクエストに応答する際に用いるユーザ ID を設定します。
971     このディレクティブを使用するためには、スタンドアロン型の
972     サーバは最初に <code>root</code> 権限で起動されている必要があります。
973     非 root ユーザでサーバを起動した場合は、
974     権限の低いユーザへと変わることができず、
975     結局元のユーザのプロセスとして実行され続けます。
976     <code>root</code> で起動した場合に親プロセスが root
977     として実行されているのは正常な動作です。
978     <var>Unix-userid</var> は次のどれかです。</p>
979
980     <dl>
981       <dt>ユーザ名</dt>
982       <dd>ユーザを名前で参照します。</dd>
983
984       <dt># に続いてユーザ番号</dt>
985       <dd>ユーザを番号で参照します。</dd>
986     </dl>
987
988     <p>このユーザは、外部に見せるように意図していないファイルに、
989     アクセス可能になってしまうような権限を持つべきではないですし、
990     同様に HTTP リクエストに対して応答するように意図していない
991     実行コードを、実行できるような権限を持つべきではないです。
992     サーバを実行するために特定の新しいユーザとグループを
993     設定することをお薦めいたします。
994     <code>nobody</code> ユーザを使用する管理者もいますが、
995     これが常に望ましいわけではありません。
996     なぜなら <code>nobody</code> ユーザは、システムで
997     他の役割を担っているかも知れないからです。</p>
998
999     <note type="warning"><title>セキュリティ</title>
1000       <p>正確にどんなことをやっているのか、その危険性を知らないで、
1001       <directive>User</directive> (や <directive
1002       module="mpm_common">Group</directive>) を <code>root</code> に
1003       設定しないでください。</p>
1004     </note>
1005
1006     <p>特記事項: このディレクティブを
1007     <directive module="core" type="section">VirtualHost</directive>
1008     で使用することはサポートされなくなりました。
1009     <program>suexec</program> 向けにサーバを設定するのであれば、
1010     <directive module="mod_suexec">SuexecUserGroup</directive>
1011     を使用してください。</p>
1012
1013     <note><title>注意</title>
1014       <p><directive>User</directive> ディレクティブは
1015       <module>beos</module> と <module>mpmt_os2</module> MPM
1016       にも存在しますが、実質的に無効で、互換性のためだけに存在します。</p>
1017     </note>
1018 </usage>
1019 </directivesynopsis>
1020
1021 <directivesynopsis>
1022 <name>ChrootDir</name>
1023 <description>apache が起動後に chroot(8) するディレクトリ
1024 </description>
1025 <syntax>ChrootDir <var>/path/to/directory</var></syntax>
1026 <default>none</default>
1027 <contextlist><context>server config</context></contextlist>
1028 <modulelist><module>event</module>
1029 <module>prefork</module><module>worker</module></modulelist>
1030
1031 <usage>
1032     <p>このディレクティブは2.2.9(?)以降で利用できます。
1033     サーバ起動後、ネットからリクエストを受け付けるより前に、
1034     サーバは指定したディレクトリに <var>chroot(8)</var> します。</p>
1035     <p>chroot 環境下でサーバを動かすのは単純ではなく、
1036     特に CGI や PHP を動かしているなら、さらなるセットアップ
1037     が必要であることに注意してください。 この機能を使おうとする前に、
1038     chroot の動作を正しく理解しておくようにしてください。</p>
1039 </usage>
1040 </directivesynopsis>
1041
1042 </modulesynopsis>