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:1448588 (outdated) -->
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
14 http://www.apache.org/licenses/LICENSE-2.0
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.
23 <modulesynopsis metafile="mpm_common.xml.meta">
25 <name>mpm_common</name>
26 <description>二つ以上のマルチプロセッシングモジュール (MPM)
27 で実装されているディレクティブのコレクション</description>
31 <name>AcceptMutex</name>
32 <description>複数の子プロセスがネットワークソケットでリクエストを
33 accept しようとしているときに、Apache がそれらの子プロセスを直列化するために
35 <syntax>AcceptMutex Default|<var>method</var></syntax>
36 <default>AcceptMutex Default</default>
37 <contextlist><context>server config</context></contextlist>
38 <modulelist><module>leader</module><module>perchild</module>
39 <module>prefork</module><module>threadpool</module><module>worker</module>
43 <p><directive>AcceptMutex</directive> ディレクティブは、
44 ネットワークソケットのリクエストを accept しようとしている複数の子プロセスを
45 Apache が直列化するために使う方法(と必要ならロックファイルの場所)を設定します。
46 Apache 2.0 以前は、このメソッドはコンパイル時にのみ選択できました。
47 最適な方法は、アーキテクチャやプラットホームに大きく依存します。
49 href="../misc/perf-tuning.html">性能のチューニング</a>
52 <p>このディレクティブが <code>Default</code>
53 に設定されていれば、コンパイル時に選択されたデフォルト値が使われます。
54 他の使用可能なメソッドの一覧は下にあります。
55 全てのメソッドが全てのプラットホームで使用可能であるわけではない、
58 使用可能なメソッドの一覧を含んだメッセージが
62 <dt><code>flock<<var>:/path/to/lockfile</var>></code></dt>
63 <dd>オプションの <var>/path/to/lockfile</var>
65 <code>flock(2)</code> システムコールを使います。
66 ロックファイルの指定には <directive module="mpm_common">LockFile</directive>
67 ディレクティブを使うことも出来ます(非推奨です)。</dd>
69 <dt><code>fcntl<<var>:/path/to/lockfile</var>></code></dt>
70 <dd>オプションの <var>/path/to/lockfile</var>
72 <code>fcntl(2)</code> システムコールを使います。
73 ロックファイルの指定には <directive module="mpm_common">LockFile</directive>
74 ディレクティブを使うことも出来ます(非推奨です)。</dd>
76 <dt><code>file<<var>:/path/to/lockfile</var>></code></dt>
77 <dd>使用できるファイルロックルーチンの中で最適なものを使います。
78 具体的には、<code>fcntl</code> が使用可能な場合はそれを使い、そうでない場合は
79 <code>flock</code> を試します。
80 この設定はプラットホームと <glossary>APR</glossary> が二つのうち少なくとも
81 一つをサポートしている場合のみ使用可能です。</dd>
83 <dt><code>posixsem</code></dt>
84 <dd>排他処理の実装に POSIX 互換セマフォを使用します</dd>
86 <dt><code>sysvsem</code></dt>
87 <dd>排他処理の実装に SySV 形式のセマフォを使います。</dd>
89 <dt><code>sem</code></dt>
90 <dd>使用できるセマフォルーチンの中で最適なものを使います。
91 具体的には、Posix 互換セマフォが使用可能な場合はそれを使い、そうでない場合は
92 SystemV IPC 形式のセマフォを試します。
93 この設定はプラットホームと <glossary>APR</glossary> が二つのうち少なくとも
94 一つをサポートしている場合のみ使用可能です。</dd>
96 <dt><code>pthread</code></dt>
97 <dd>POSIX Threads (PThreads) 規格で実装されている
102 <p>コンパイル時にシステムのデフォルトに選ばれたものが何かを見たい場合は、
103 <directive module="core">LogLevel</directive> を <code>debug</code>
104 に設定するとよいでしょう。デフォルトの <directive>AcceptMutex</directive>
105 が <directive module="core">ErrorLog</directive> に書き込まれます。</p>
107 <note type="warning"><title>警告</title>
108 <p>ほとんどのシステムにおいては、<code>pthread</code> オプションが
109 選ばれていると、子プロセスが <code>AcceptCntl</code> mutex を
110 保持しているときに異常終了した場合、サーバはリクエストへの応答を
111 停止してしまいます。これが発生した場合は、サーバを復旧させるためには
112 手動で再起動させる必要があります。</p>
114 <p>Solaris は例外で、Apache も使用している、子プロセスが mutex を
115 保持して異常終了した後に mutex を復旧させるための機構を提供をしています。</p>
116 <p>御使用のシステムが <code>pthread_mutexattr_setrobust_np()</code> 関数を
117 実装している場合は、<code>pthread</code> オプションを安全に使用できる
124 <name>CoreDumpDirectory</name>
125 <description>Apache がコアダンプする前に移動を試みるディレクトリ
127 <syntax>CoreDumpDirectory <var>directory</var></syntax>
128 <default>デフォルトの設定は説明文を読んでください</default>
129 <contextlist><context>server config</context></contextlist>
130 <modulelist><module>beos</module><module>leader</module>
131 <module>mpm_winnt</module><module>perchild</module><module>prefork</module>
132 <module>threadpool</module><module>worker</module></modulelist>
135 <p>Apache がコアダンプする前に移動を試みるディレクトリを制御します。
136 デフォルト値は <directive module="core">ServerRoot</directive>
137 ディレクトリですが、このディレクトリはサーバの実行されているユーザ権限で
138 書き込み可能であるべきではないので、通常はコアダンプは書き込まれません。
139 デバッグのためにコアダンプが必要であれば、
140 このディレクティブを使って他の位置にコアダンプを書き出すようにできます。</p>
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> を明示的に設定したときに
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><module>leader</module><module>perchild</module>
160 <module>prefork</module><module>threadpool</module>
161 <module>worker</module></modulelist>
162 <compatibility>2.0.49 以降</compatibility>
165 <p>安全上の理由から、<code>--enable-exception-hook</code> configure
166 オプションを有効にした場合にのみ、このディレクティブを利用できます。
167 外部モジュールをプラグインして、子がクラッシュした後に何か実行できるような
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>
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>
189 <p><directive>GracefulShutdownTimeout</directive> には
190 サーバーが "graceful-stop" シグナルを受け取ってから現在の
191 リクエストの処理を最大で何秒間続けるかを指定します。</p>
193 <p>この値をゼロに設定すると、処理中として残っているリクエストが
194 全て完了するまでサーバーは終了しません。</p>
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><module>leader</module>
205 <module>mpmt_os2</module><module>perchild</module><module>prefork</module>
206 <module>threadpool</module><module>worker</module></modulelist>
207 <compatibility>Apache 2.0 以降で、グローバル設定でのみ有効です。</compatibility>
210 <p><directive>Group</directive> ディレクティブで、
211 リクエストに応答する際に所属しておくグループを設定します。
213 サーバは最初に <code>root</code> 権限で起動されている必要があります。
214 非 root ユーザでサーバを起動した場合は、指定したグループに変化できずに、
215 結果的に起動したユーザの属するグループで実行されることになります。
216 <var>unix-group</var> は次のうちのいずれかです:</p>
220 <dd>グループを名前で参照します</dd>
222 <dt><code>#</code> に続いてグループ番号</dt>
223 <dd>グループを番号で参照します。</dd>
226 <example><title>例</title>
230 <p>サーバを実行するために特定の新しいグループを設定することを
231 お薦めします。<code>nobody</code> を使用する管理者もいますが、
232 可能であったり望ましい訳では必ずしもありません。</p>
234 <note type="warning"><title>セキュリティ</title>
235 <p>正確にどんなことをやっているのか、その危険性を知らないで、
236 <directive>Group</directive> (や <directive
237 module="mpm_common">User</directive>) を
238 <code>root</code> に 設定しないでください。</p>
242 <directive module="core" type="section">VirtualHost</directive>
243 で使用することはサポートされなくなりました。Apache 2.0 で
244 <program>suexec</program> を設定したい場合は、
245 <directive module="mod_suexec">SuexecUserGroup</directive>
248 <note><title>注意</title>
249 <p><directive>Group</directive> ディレクティブは
250 <module>beos</module> と <module>mpmt_os2</module> MPM
251 にも存在しますが、実質的に無効で、互換性のためだけに存在します。</p>
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><module>leader</module>
264 <module>mpm_winnt</module><module>mpmt_os2</module>
265 <module>perchild</module><module>prefork</module>
266 <module>threadpool</module><module>worker</module></modulelist>
269 <p><directive>PidFile</directive> ディレクティブで、
270 デーモンのプロセス ID をサーバが記録するファイルを設定します。
272 <directive module="core">ServerRoot</directive>
273 からの相対的なものとして扱われます。</p>
275 <example><title>例</title>
276 PidFile /var/run/apache.pid
279 <p>サーバが <directive module="core">ErrorLog</directive>
280 や <directive module="mod_log_config">TransferLog</directive>
282 再読込したりさせるために、サーバにシグナルを送ることができると
284 これは SIGHUP (kill -1) シグナルを <directive>PidFile</directive>
285 に書かれているプロセス ID に送ることでできます。</p>
287 <p><directive>PidFile</directive> には、ログファイルの設置位置や
288 <a href="../misc/security_tips.html#serverroot">セキュリティ</a>
291 <note><title>注意</title>
293 <program>apachectl</program>
294 スクリプトのみを使用してサーバの (再) 起動や停止を
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><module>leader</module>
306 <module>mpm_netware</module><module>mpm_winnt</module>
307 <module>mpmt_os2</module><module>perchild</module>
308 <module>prefork</module><module>threadpool</module><module>worker</module>
309 <module>event</module>
311 <compatibility>Apache 2.0 から必須ディレクティブ。<var>protocol</var>
312 引数は 2.1.5 で追加。</compatibility>
315 <p><directive>Listen</directive> ディレクティブは Apache
316 が特定の IP アドレスやポート番号だけを listen するように指定します。
317 デフォルトでは全ての IP インターフェースのリクエストに応答します。
318 <directive>Listen</directive> ディレクティブは
320 もし設定ファイルになければ、サーバは起動に失敗します。
321 これは以前のバージョンの Apache から変更のあった部分です。</p>
323 <p><directive>Listen</directive> ディレクティブでは、特定のポートあるいは
324 アドレスとポートの組み合わせから入ってくるリクエストに対して
326 もしポート番号だけが指定された場合は、サーバは全インターフェースの
327 指定されたポート番号に対して listen します。
328 IP アドレスがポートとともに指定された場合は、
329 サーバは指定されたポートとインターフェースに対して listen
332 <p>複数のアドレスとポートに対して listen するように、
333 複数の <directive>Listen</directive> ディレクティブを使うこともできます。
334 サーバは列挙されたアドレスとポート全てからのリクエストに対して
337 <p>例えば、サーバが 80 番ポートと 8000 番ポートの両方の
338 コネクションを受け入れる場合は、次のようにします。</p>
345 <p>二つの特定のインターフェースとポート番号からのコネクションを
346 受け入れるようにするには、次のようにします。</p>
349 Listen 192.170.2.1:80<br />
350 Listen 192.170.2.5:8000
353 <p>IPv6 アドレスは角括弧で囲まなければなりません。
357 Listen [2001:db8::a00:20ff:fea7:ccea]:80
360 <p><var>protocol</var> オプション引数は通常の設定では必要ありません。
361 無指定の場合、443 番ポートには <code>https</code> が、他のポートには
362 <code>http</code> がデフォルト値として使用されます。
363 protocol 指定は、どのモジュールがリクエストを処理するかを決定し、
364 <directive module="core">AcceptFilter</directive>
365 によるプロトコル特有の最適化を行うようにします。</p>
367 <p>非標準なポートで運用している際にのみ protocol 指定が必要になります。
368 たとえば <code>https</code> なサイトを 8443 番ポートで運用している場合 :</p>
371 Listen 192.170.2.1:8443 https
374 <note><title>エラー条件</title>
375 同一 IP アドレスとポートの組に、複数の <directive>Listen</directive>
376 ディレクティブを指定してしまうと、<code>Address already in use</code>
377 というエラーメッセージを受けることになります。
382 <seealso><a href="../dns-caveats.html">DNS の問題</a></seealso>
383 <seealso><a href="../bind.html">Apache
384 が使用するアドレスとポートの設定</a></seealso>
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><module>leader</module>
394 <module>mpm_netware</module><module>mpm_winnt</module>
395 <module>mpmt_os2</module><module>perchild</module><module>prefork</module>
396 <module>threadpool</module><module>worker</module></modulelist>
399 <p>保留状態のコネクションのキューの最大長です。
400 一般的には調整する必要はありませんし、調整は望ましくありません。
401 しかし、TCP SYN フラッドアタックの状況下におかれる場合に、
403 <code>listen(2)</code> システムコールのバックログパラメータを
406 <p>この値は OS により、小さな数に抑えられます。
407 値は OS 毎に異なっています。また多くの OS では、
408 バックログとして指定されている値ちょうどまで使っているわけではなく、
409 設定されている値に基づいて (通常は設定値よりも大きな値を)
410 使っていることに注意してください。</p>
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><module>leader</module><module>perchild</module>
421 <module>prefork</module><module>threadpool</module><module>worker</module>
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>
436 <note type="warning"><title>セキュリティ</title>
437 <p><code>/var/tmp</code>
438 といった、誰でも書き込めるディレクトリにファイルを
439 <em>置かない</em>方がよいです。なぜなら、サーバが起動時に作成する
440 ロックファイルの作成自体を妨害することによって、
441 誰でもサービス拒否アタックを引き起こすことができるからです。</p>
443 <note type="warning"><title>非推奨</title>
444 <p>このディレクティブは非推奨です。 <directive
445 module="mpm_common">AcceptMutex</directive>
446 ディレクティブで排他処理の方法の指定とともにロックファイルの場所も指定してください。</p>
450 <seealso><directive module="mpm_common">AcceptMutex</directive></seealso>
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><module>leader</module>
461 <module>prefork</module><module>threadpool</module><module>worker</module>
465 <p><directive>MaxClients</directive> ディレクティブは、
466 応答することのできる同時リクエスト数を設定します。
467 <directive>MaxClients</directive> 制限数を越えるコネクションは通常、
468 <directive module="mpm_common">ListenBacklog</directive>
469 ディレクティブで設定した数までキューに入ります。
470 他のリクエストの最後まで達して子プロセスが空くと、
473 <p>スレッドを用いないサーバ (<em>すなわち</em> <module>prefork</module>)
474 では、<directive>MaxClients</directive>
477 デフォルト値は <code>256</code> で、これを増加させたい場合は、
478 <directive module="mpm_common">ServerLimit</directive>
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>
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><module>leader</module>
505 <module>mpm_netware</module><module>prefork</module>
506 <module>threadpool</module><module>worker</module><module>mpm_winnt</module></modulelist>
509 <p><directive>MaxMemFree</directive> ディレクティブは
510 <code>free()</code> が呼ばれない限り、
511 主アロケータが保持できる空のメモリの最大値をキロバイト単位で設定します。
512 設定されていないか、零に設定されているときは、無制限になります。</p>
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>leader</module><module>mpm_netware</module>
523 <module>mpm_winnt</module><module>mpmt_os2</module>
524 <module>perchild</module><module>prefork</module>
525 <module>threadpool</module><module>worker</module></modulelist>
528 <p><directive>MaxRequestsPerChild</directive> ディレクティブは、
529 個々の子サーバプロセスが扱うことのできるリクエストの制限数を
530 設定します。<directive>MaxRequestsPerChild</directive>
531 個のリクエストの後に、子プロセスは終了します。
532 <directive>MaxRequestsPerChild</directive> が <code>0</code>
533 に設定されている場合は、プロセスは期限切れにより終了することはありません。</p>
535 <note><title>その他のデフォルト値</title>
536 <p><module>mpm_netware</module> と <module>mpm_winnt</module>
537 でのデフォルト値は <code>0</code> です。</p>
540 <p><directive>MaxRequestsPerChild</directive>
541 を非ゼロにすることにより、(偶発的な) メモリーリークが起こった場合に
542 プロセスが消費するメモリの総量を制限できます。</p>
544 <note><title>注</title>
545 <p><directive module="core">KeepAlive</directive> リクエストの場合は、
546 一つ目のリクエストだけがこの制限に該当します。
547 実効的には、一つの子プロセスあたりの<em>コネクション</em>数を
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><module>leader</module>
560 <module>mpm_netware</module><module>mpmt_os2</module>
561 <module>perchild</module><module>threadpool</module><module>worker</module>
565 <p>アイドルなスレッドの最大数です。異なる MPM ではそれぞれ、
566 このディレクティブは異なる取り扱われ方をされます。</p>
568 <p><module>perchild</module> では、
569 デフォルトは <code>MaxSpareThreads 10</code> です。
570 この MPM はアイドルスレッド数を、それぞれの子プロセスごとに監視します。
571 子プロセスにアイドルスレッドが多すぎる場合は、
572 サーバはその子プロセスに含まれるスレッドを終了し始めます。</p>
574 <p><module>worker</module>, <module>leader</module>,
575 <module>threadpool</module> では、
576 デフォルトは <code>MaxSpareThreads 250</code> です。
577 この MPM はアイドルスレッド数をサーバ全体で監視します。
578 サーバでアイドルスレッド数が多すぎる場合は、
579 この数字よりも少ない数になるまで子プロセスを終了します。</p>
581 <p><module>mpm_netware</module> では、
582 デフォルトは <code>MaxSpareThreads 100</code> です。
583 この MPM はシングルプロセスで実行されますので、
584 スペアスレッド数もサーバ全体で勘定します。</p>
586 <p><module>beos</module> と <module>mpmt_os2</module> は
587 <module>mpm_netware</module> と似た挙動をします。
588 <module>beos</module> でのデフォルト値は <code>MaxSpareThreads 50</code>
589 です。<module>mpmt_os2</module> でのデフォルト値は <code>10</code>
592 <note><title>制限事項</title>
593 <p><directive>MaxSpareThreads</directive> の取る値には制限があります。
594 Apache は次の規則に従って自動的に補正します。</p>
596 <li><module>perchild</module> では、
597 <directive>MaxSpareThreads</directive> が
598 <directive module="mpm_common">ThreadLimit</directive>
599 と等しいかそれ以下である必要があります。</li>
601 <li><module>mpm_netware</module> は
602 <directive module="mpm_common">MinSpareThreads</directive>
605 <li><module>leader</module>, <module>threadpool</module>,
606 <module>worker</module> では、
607 <directive module="mpm_common">MinSpareThreads</directive> と
608 <directive module="mpm_common">ThreadsPerChild</directive>
609 で決まる総和と等しいか大きい必要があります。</li>
613 <seealso><directive module="mpm_common">MinSpareThreads</directive></seealso>
614 <seealso><directive module="mpm_common">StartServers</directive></seealso>
618 <name>MinSpareThreads</name>
619 <description>リクエストに応答することのできる
620 アイドルスレッド数の最小数</description>
621 <syntax>MinSpareThreads <var>number</var></syntax>
622 <default>詳細は使用方法をご覧下さい。</default>
623 <contextlist><context>server config</context></contextlist>
624 <modulelist><module>beos</module><module>leader</module>
625 <module>mpm_netware</module><module>mpmt_os2</module>
626 <module>perchild</module><module>threadpool</module><module>worker</module>
630 <p>リクエストに応答するスレッド数の最小値です。
632 このディレクティブは異なる取り扱われ方をします。</p>
634 <p><module>perchild</module> では、
635 デフォルトは <code>MinSpareThreads 5</code> で、
636 アイドルスレッド数を子プロセス毎に監視します。
637 もし子プロセスに十分な数のスレッドがなければ、
638 サーバはその子プロセスに新しいスレッドを作り始めます。
639 ですから、<directive module="perchild">NumServers</directive>
640 を <code>10</code> に、<directive>MinSpareThreads</directive> を
641 <code>5</code> にした場合は、最小でも 50 のアイドルスレッドが
644 <p><module>worker</module>, <module>leader</module>,
645 <module>threadpool</module> では、
646 デフォルトは <code>MinSpareThreads 75</code> で、
647 アイドルスレッド数をサーバ全体で監視します。
648 もしサーバに十分な数のアイドルスレッドがなければ、
649 アイドルスレッド数がこの数 <var>number</var> よりも大きくなるまで
652 <p><module>mpm_netware</module> では、
653 デフォルトは <code>MinSpareThreads 10</code> で、
654 シングルプロセス MPM ですので、サーバ全体で管理されます。</p>
656 <p><module>beos</module> と <module>mpmt_os2</module> は、
657 <module>mpm_netware</module>によく似ています。
658 <module>beos</module> でのデフォルトは <code>MinSpareThreads 1</code>
659 です。<module>mpmt_os2</module> でのデフォルトは
660 <code>5</code> です。</p>
662 <seealso><directive module="mpm_common">MaxSpareThreads</directive></seealso>
663 <seealso><directive module="mpm_common">StartServers</directive></seealso>
667 <name>ScoreBoardFile</name>
668 <description>子プロセスと連携するためのデータを保存する
669 ファイルの位置</description>
670 <syntax>ScoreBoardFile <var>file-path</var></syntax>
671 <default>ScoreBoardFile logs/apache_status</default>
672 <contextlist><context>server config</context></contextlist>
673 <modulelist><module>beos</module><module>leader</module>
674 <module>mpm_winnt</module><module>perchild</module><module>prefork</module>
675 <module>threadpool</module><module>worker</module></modulelist>
678 <p>Apache は親プロセスと子プロセス間の通信にスコアボードを用います。
679 この通信機能にファイルを必要とするアーキテクチャもあります。
680 ファイルが指定されていなければ、Apache はまずメモリ上
681 (匿名共有メモリ) にスコアボードを作ろうとし、それが失敗すると
682 ディスク上にファイル (ファイルベースの共有メモリ) を作ろうとします。
683 このディレクティブを指定すると、Apache
684 は必ずディスクにファイルを生成します。</p>
686 <example><title>例</title>
687 ScoreBoardFile /var/run/apache_status
690 <p>ファイルベースの共有メモリは、サードパーティー製のアプリケーションで
691 スコアボードに直接アクセスする必要がある場合に役に立ちます。</p>
693 <p><directive>ScoreBoardFile</directive> を使う場合、
694 RAM ディスク上に置くとスピードが向上するでしょう。
696 <a href="../misc/security_tips.html">セキュリティ</a>
697 と同様の注意点があるので、注意してください。</p>
699 <seealso><a href="../stopping.html">Apache の停止と再起動</a></seealso>
703 <name>ReceiveBufferSize</name>
704 <description>TCP 受信バッファサイズ</description>
705 <syntax>ReceiveBufferSize <var>bytes</var></syntax>
706 <default>ReceiveBufferSize 0</default>
707 <contextlist><context>server config</context></contextlist>
708 <modulelist><module>beos</module>
709 <module>mpm_netware</module><module>mpm_winnt</module>
710 <module>mpmt_os2</module><module>prefork</module>
711 <module>worker</module></modulelist>
714 <p>サーバは TCP 受信バッファサイズを指定されたバイト数に設定します。</p>
716 <p><code>0</code>にした場合、OS のデフォルト値が使用されます。</p>
721 <name>SendBufferSize</name>
722 <description>TCP バッファサイズ</description>
723 <syntax>SendBufferSize <var>bytes</var></syntax>
724 <default>SendBufferSize 0</default>
725 <contextlist><context>server config</context></contextlist>
726 <modulelist><module>beos</module><module>leader</module>
727 <module>mpm_netware</module><module>mpm_winnt</module>
728 <module>mpmt_os2</module><module>perchild</module><module>prefork</module>
729 <module>threadpool</module><module>worker</module></modulelist>
732 <p>サーバは TCP 送信バッファサイズを指定されたバイト数に設定します。
734 (<em>例</em> 100ms 程度、大陸横断高速通信路など)
735 古い一般的な OS のデフォルト値を増やすのに非常に便利です。</p>
737 <p><code>0</code>にした場合、OS のデフォルト値が使用されます。</p>
742 <name>ServerLimit</name>
743 <description>設定可能なサーバプロセス数の上限</description>
744 <syntax>ServerLimit <var>number</var></syntax>
745 <default>詳細は使用法を参照</default>
746 <contextlist><context>server config</context></contextlist>
747 <modulelist><module>leader</module><module>perchild</module>
748 <module>prefork</module><module>threadpool</module><module>worker</module>
752 <p><module>prefork</module> MPM の場合は、このディレクティブは
754 <directive module="mpm_common">MaxClients</directive>
755 に設定可能な上限値を設定することになります
756 <transnote>prefork の場合は同時クライアント数 = サーバプロセス数なので</transnote>。
757 <module>worker</module> MPM の場合には、このディレクティブは
758 <directive module="mpm_common">ThreadLimit</directive>
761 <directive module="mpm_common">MaxClients</directive>
762 に設定可能な上限値を設定することになります。
763 このディレクティブを変更して再起動<transnote>apachectl
764 restart</transnote>しても無視されますが、
765 <directive module="mpm_common">MaxClients</directive>
769 <p>このディレクティブを使用する際は特に注意してください。
770 <directive>ServerLimit</directive> が必要以上に大きな値に
771 設定された場合は、余計な未使用共有メモリが割り当てられます。
772 <directive>ServerLimit</directive> と
773 <directive module="mpm_common">MaxClients</directive>
774 がシステムの扱える範囲を越えた設定値になっていると、
775 Apache は起動しないか、起動しても不安定になるでしょう。</p>
777 <p><module>prefork</module> MPM では、
778 <directive module="mpm_common">MaxClients</directive>
779 を 256 (デフォルト) よりも大きな値に設定する必要がある時にだけ使用してください。
780 希望の <directive module="mpm_common">MaxClients</directive>
781 数とくらべて、必要以上に大きな値を指定することは避けてください。</p>
783 <p><module>worker</module>, <module>leader</module>,
784 <module>threadpool</module> MPM では、
785 <directive module="mpm_common">MaxClients</directive> と
786 <directive module="mpm_common">ThreadsPerChild</directive>
787 の設定で 16 サーバプロセス (デフォルト)
788 以上必要になる場合にのみ使用してください。希望の
789 <directive module="mpm_common">MaxClients </directive> と
790 <directive module="mpm_common">ThreadsPerChild</directive>
791 とくらべて、必要となるサーバプロセス数以上に大きな値を
794 <p><module>perchild</module> MPM では、
795 <directive module="perchild">NumServers</directive> を 8 (デフォルト)
796 よろいも大きな値に設定する必要があるときにのみ使用してください。</p>
798 <note><title>注意</title>
799 <p><code>ServerLimit 20000</code> という制限付きでコンパイルされています
800 (<module>prefork</module> MPM では <code>200000</code>) 。
801 これはスペルミスによって誤って酷い状況になるのを、
805 <seealso><a href="../stopping.html">Apache の停止と再起動</a></seealso>
809 <name>StartServers</name>
810 <description>起動時に生成される子サーバプロセスの数</description>
811 <syntax>StartServers <var>number</var></syntax>
812 <default>詳細は使用方法を参照</default>
813 <contextlist><context>server config</context></contextlist>
814 <modulelist><module>leader</module><module>mpmt_os2</module>
815 <module>prefork</module><module>threadpool</module><module>worker</module>
819 <p><directive>StartServers</directive> ディレクティブは、
820 起動時に生成される子サーバプロセスの数を設定します。
821 プロセス数は負荷に応じて動的に制御されますので、
822 通常はこの値を調整する理由はあまりないでしょう。</p>
824 <p>デフォルト値は MPM ごとに異なります。
825 <module>leader</module>, <module>threadpool</module>,
826 <module>worker</module> は <code>StartServers 3</code> です。
827 <module>prefork</module> は <code>5</code> で、
828 <module>mpmt_os2</module> は <code>2</code> です。</p>
833 <name>StartThreads</name>
834 <description>起動時に生成されるスレッドの数</description>
835 <syntax>StartThreads <var>number</var></syntax>
836 <default>詳細は使用方法を参照</default>
837 <contextlist><context>server config</context></contextlist>
838 <modulelist><module>beos</module><module>mpm_netware</module>
839 <module>perchild</module></modulelist>
842 <p>起動時に生成されるスレッドの数です。
843 スレッド数は負荷に応じて動的に制御されますので、
844 通常はこの値を調整する理由はあまりないでしょう。</p>
846 <p><module>perchild</module> でのデフォルトは
847 <code>StartThreads 5</code> で、このディレクティブは起動時に
848 プロセス毎のスレッド数を追跡します。</p>
850 <p><module>mpm_netware</module> でのデフォルトは
851 <code>StartThreads 50</code> で、
853 起動時にリクエストに応答するスレッドの総数となります。</p>
855 <p><module>beos</module> でのデフォルトは <code>StartThreads
857 また、起動時に生成されるスレッドの総数にも反映されます。</p>
862 <name>ThreadLimit</name>
863 <description>設定可能な子プロセス毎のスレッド数の上限を
865 <syntax>ThreadLimit <var>number</var></syntax>
866 <default>詳細は使用方法を参照</default>
867 <contextlist><context>server config</context></contextlist>
868 <modulelist><module>leader</module><module>mpm_winnt</module>
869 <module>perchild</module><module>threadpool</module><module>worker</module>
871 <compatibility>Apache 2.0.41 とそれ以降の <module>mpm_winnt</module>
872 で利用可能</compatibility>
877 <directive module="mpm_common">ThreadsPerChild</directive>
878 に設定可能な上限値を設定します。再起動時にこのディレクティブの値を
880 <directive module="mpm_common">ThreadsPerChild</directive>
881 は再起動中に、このディレクティブで指定された上限値まで
884 <p>このディレクティブを使用する際は特に注意してください。
885 <directive>ThreadLimit</directive> が
886 <directive module="mpm_common">ThreadsPerChild</directive>
888 余計な未使用共有メモリが割り当てられてしまいます。
889 <directive>ThreadLimit</directive> が
890 <directive module="mpm_common">ThreadsPerChild</directive>
891 の両方がシステムの扱える範囲を超えている場合は、
892 Apache は起動しないか、起動したとしても不安定になるでしょう。
893 このディレクティブの値は今使用している Apache の <directive
894 module="mpm_common">ThreadsPerChild</directive> の予想上限値を
898 <p><directive>ThreadLimit</directive> のデフォルト値は
899 <module>mpm_winnt</module> のときは <code>1920</code> で、
900 他の場合は <code>64</code> です。</p>
902 <note><title>注意</title>
903 <p><code>ThreadLimit 20000</code> (<module>mpm_winnt</module>
904 の場合は <code>ThreadLimit 15000</code> )
906 これはスペルミスによって誤って酷い状況になるのを、
913 <name>ThreadsPerChild</name>
914 <description>子プロセスそれぞれに生成されるスレッド数</description>
915 <syntax>ThreadsPerChild <var>number</var></syntax>
916 <default>詳細は使用方法を参照</default>
917 <contextlist><context>server config</context></contextlist>
918 <modulelist><module>leader</module><module>mpm_winnt</module>
919 <module>threadpool</module><module>worker</module></modulelist>
922 <p>このディレクティブは、それぞれの子プロセスで生成される
924 子プロセスは開始時にこれらのスレッドを生成して、
925 その後は生成しません。<module>mpm_winnt</module> のような、
926 子プロセスが一つしかないような MPM を利用しているのであれば、
927 この値はサーバの負荷全体を十分取り扱える程度に、
928 大きくなければなりません。<module>worker</module> のような、
929 子プロセスが複数あるような MPM を利用しているのであれば、
931 <em>スレッド総数</em>が多くなければなりません。</p>
933 <p><module>mpm_winnt</module>での <directive>ThreadsPerChild</directive>
934 のデフォルト値は <code>64</code> で、他の場合は
935 <code>25</code> です。</p>
940 <name>ThreadStackSize</name>
941 <description>クライアントのコネクションを受け持つスレッドが使用する
942 スタックのバイト数</description>
943 <syntax>ThreadStackSize <var>size</var></syntax>
944 <default>NetWare では 65536。他の OS では違った値</default>
945 <contextlist><context>server config</context></contextlist>
946 <modulelist><module>leader</module><module>mpm_netware</module>
947 <module>mpm_winnt</module><module>perchild</module>
948 <module>threadpool</module><module>worker</module>
950 <compatibility>2.1 以降</compatibility>
953 <p>クライアントコネクションを受け持ち、コネクション処理に必要なモジュールの
954 呼び出しを行なっているスレッドの、(自動変数用の) スタックサイズは
955 <directive>ThreadStackSize</directive> ディレクティブで指定します。
956 大抵の場合 OS の指定しているスタックサイズのデフォルト値は
957 適切なものですが、調整が必要になる場合もあります:</p>
960 <li>スレッドスタックサイズのデフォルト値が比較的小さく設定されている
961 プラットホーム (例えば HP-UX) では、自動変数用の領域で大きな容量を
962 使用するサードパーティ製モジュールのために Apache がクラッシュする
963 場合もあります。そのモジュールは他のプラットホームでは
964 スタックサイズが大きいために、快調に動作するかもしれません。
965 このタイプのクラッシュは、<directive>ThreadStackSize</directive>
966 で OS のデフォルト値より大きな値を指定することで解決します。
967 サードパーティ製モジュールでこの処置が必要であると記載されている
968 場合か、Apache の出力するメッセージでスレッドスタックサイズが
969 小さすぎると指摘されている場合にのみ、この調整をしてください。</li>
971 <li>デフォルトスレッドスタックサイズが、Web サーバ用途に必要な量よりも
972 明らかに大きすぎる場合、<directive>ThreadStackSize</directive>
973 を OS のデフォルト値よりも小さな値にすることで、子プロセスあたりの
974 スレッド数をより多く持たせられるようになります。
975 このタイプの調整は、テスト環境でウェブサーバを完全に
977 まれに多数のスタックが要求されるリクエストを受けることがあるかも
979 Web サーバの設定を変更すると、現在の <directive>ThreadStackSize</directive>
980 の設定が取り消される場合があります。</li>
987 <description>リクエストに応答する際に用いるユーザ ID</description>
988 <syntax>User <var>unix-userid</var></syntax>
989 <default>User #-1</default>
990 <contextlist><context>server config</context></contextlist>
991 <modulelist><module>leader</module><module>perchild</module>
992 <module>prefork</module><module>threadpool</module><module>worker</module>
994 <compatibility>Apache 2.0 以降で、グローバル設定でのみ有効です。
998 <p><directive>User</directive> ディレクティブは
999 サーバがリクエストに応答する際に用いるユーザ ID を設定します。
1000 このディレクティブを使用するためには、スタンドアロン型の
1001 サーバは最初に <code>root</code> 権限で起動されている必要があります。
1002 非 root ユーザでサーバを起動した場合は、
1003 権限の低いユーザへと変わることができず、
1004 結局元のユーザのプロセスとして実行され続けます。
1005 <code>root</code> で起動した場合に親プロセスが root
1006 として実行されているのは正常な動作です。
1007 <var>Unix-userid</var> は次のどれかです。</p>
1011 <dd>ユーザを名前で参照します。</dd>
1013 <dt># に続いてユーザ番号</dt>
1014 <dd>ユーザを番号で参照します。</dd>
1017 <p>このユーザは、外部に見せるように意図していないファイルに、
1018 アクセス可能になってしまうような権限を持つべきではないですし、
1019 同様に HTTP リクエストに対して応答するように意図していない
1020 実行コードを、実行できるような権限を持つべきではないです。
1021 サーバを実行するために特定の新しいユーザとグループを
1023 <code>nobody</code> ユーザを使用する管理者もいますが、
1025 なぜなら <code>nobody</code> ユーザは、システムで
1026 他の役割を担っているかも知れないからです。</p>
1028 <note type="warning"><title>セキュリティ</title>
1029 <p>正確にどんなことをやっているのか、その危険性を知らないで、
1030 <directive>User</directive> (や <directive
1031 module="mpm_common">Group</directive>) を <code>root</code> に
1035 <p><module>perchild</module> MPM では、異なるユーザ ID
1036 で複数のバーチャルホストを動かすことを目的としていますが、
1037 <directive>User</directive> は、主サーバのユーザ ID
1038 と、<directive module="perchild">AssignUserID</directive>
1039 ディレクティブを持たない <directive type="section"
1040 module="core">VirtualHost</directive> セクションへの
1041 フォールバックとを定義することになります。</p>
1044 <directive module="core" type="section">VirtualHost</directive>
1045 で使用することはサポートされなくなりました。
1046 <program>suexec</program> 向けにサーバを設定するのであれば、
1047 <directive module="mod_suexec">SuexecUserGroup</directive>
1050 <note><title>注意</title>
1051 <p><directive>User</directive> ディレクティブは
1052 <module>beos</module> と <module>mpmt_os2</module> MPM
1053 にも存在しますが、実質的に無効で、互換性のためだけに存在します。</p>
1056 </directivesynopsis>
1059 <name>ChrootDir</name>
1060 <description>apache が起動後に chroot(8) するディレクトリ
1062 <syntax>ChrootDir <var>/path/to/directory</var></syntax>
1063 <default>none</default>
1064 <contextlist><context>server config</context></contextlist>
1065 <modulelist><module>event</module>
1066 <module>prefork</module><module>worker</module></modulelist>
1069 <p>このディレクティブは2.2.9(?)以降で利用できます。
1070 サーバ起動後、ネットからリクエストを受け付けるより前に、
1071 サーバは指定したディレクトリに <var>chroot(8)</var> します。</p>
1072 <p>chroot 環境下でサーバを動かすのは単純ではなく、
1073 特に CGI や PHP を動かしているなら、さらなるセットアップ
1074 が必要であることに注意してください。 この機能を使おうとする前に、
1075 chroot の動作を正しく理解しておくようにしてください。</p>
1077 </directivesynopsis>