Apache HTTP サーバ バージョン 2.4
Apache MPM 共通ディレクティブ
この日本語訳はすでに古くなっている 可能性があります。 最近更新された内容を見るには英語版をご覧下さい。
| 説明: | 二つ以上のマルチプロセッシングモジュール (MPM) で実装されているディレクティブのコレクション |
|---|---|
| ステータス: | MPM |
CoreDumpDirectory ディレクティブ
| 説明: | Apache がコアダンプする前に移動を試みるディレクトリ |
|---|---|
| 構文: | CoreDumpDirectory directory |
| デフォルト: | デフォルトの設定は説明文を読んでください |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | MPM |
| モジュール: | beos, leader, mpm_winnt, perchild, prefork, threadpool, worker |
Apache がコアダンプする前に移動を試みるディレクトリを制御します。
デフォルト値は ServerRoot
ディレクトリですが、このディレクトリはサーバの実行されているユーザ権限で
書き込み可能であるべきではないので、通常はコアダンプは書き込まれません。
デバッグのためにコアダンプが必要であれば、
このディレクティブを使って他の位置にコアダンプを書き出すようにできます。
Linux でのコアダンプ
Apache が root として起動されて、別のユーザの権限に以降した場合は
Linux のカーネルはディレクトリがプロセスの権限で書き込み可能な場合でさえも
コアダンプを無効にします。Apache (2.0.46 以降) は
Linux 2.4 以降ではコアダンプを行なうように再指定しますが、それは
CoreDumpDirectory を明示的に設定したときに
限ります。
Listen ディレクティブ
| 説明: | サーバが listen するIP アドレスとポート番号 |
|---|---|
| 構文: | Listen [IP-address:]portnumber [protocol] |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | MPM |
| モジュール: | beos, leader, mpm_netware, mpm_winnt, mpmt_os2, perchild, prefork, threadpool, worker, event |
| 互換性: | Apache 2.0 から必須ディレクティブ。protocol 引数は 2.1.5 で追加。 |
Listen ディレクティブは Apache
が特定の IP アドレスやポート番号だけを listen するように指定します。
デフォルトでは全ての IP インターフェースのリクエストに応答します。
Listen ディレクティブは
現在は必須のディレクティブとなりました。
もし設定ファイルになければ、サーバは起動に失敗します。
これは以前のバージョンの Apache から変更のあった部分です。
Listen ディレクティブでは、特定のポートあるいは
アドレスとポートの組み合わせから入ってくるリクエストに対して
応答するように指定します。
もしポート番号だけが指定された場合は、サーバは全インターフェースの
指定されたポート番号に対して listen します。
IP アドレスがポートとともに指定された場合は、
サーバは指定されたポートとインターフェースに対して listen
します。
複数のアドレスとポートに対して listen するように、
複数の Listen ディレクティブを使うこともできます。
サーバは列挙されたアドレスとポート全てからのリクエストに対して
応答します。
例えば、サーバが 80 番ポートと 8000 番ポートの両方の コネクションを受け入れる場合は、次のようにします。
Listen 80
Listen 8000
二つの特定のインターフェースとポート番号からのコネクションを 受け入れるようにするには、次のようにします。
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
IPv6 アドレスは角括弧で囲まなければなりません。 例えば次の例のようにです。
Listen [2001:db8::a00:20ff:fea7:ccea]:80
protocol オプション引数は通常の設定では必要ありません。
無指定の場合、443 番ポートには https が、他のポートには
http がデフォルト値として使用されます。
protocol 指定は、どのモジュールがリクエストを処理するかを決定し、
AcceptFilter
によるプロトコル特有の最適化を行うようにします。
非標準なポートで運用している際にのみ protocol 指定が必要になります。
たとえば https なサイトを 8443 番ポートで運用している場合 :
Listen 192.170.2.1:8443 https
エラー条件
同一 IP アドレスとポートの組に、複数の Listen
ディレクティブを指定してしまうと、Address already in use
というエラーメッセージを受けることになります。
参照
ListenCoresBucketsRatio ディレクティブ
| 説明: | Ratio between the number of CPU cores (online) and the number of listeners' buckets |
|---|---|
| 構文: | ListenCoresBucketsRatio ratio |
| デフォルト: | ListenCoresBucketsRatio 0 (disabled) |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | MPM |
| モジュール: | event, worker, prefork |
| 互換性: | Available in Apache HTTP Server 2.4.17, with a kernel supporting
the socket option SO_REUSEPORT and distributing new connections
evenly across listening processes' (or threads') sockets using it (eg. Linux
3.9 and later, but not the current implementations of SO_REUSEPORT
in *BSDs. |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
ScoreBoardFile ディレクティブ
| 説明: | 子プロセスと連携するためのデータを保存する ファイルの位置 |
|---|---|
| 構文: | ScoreBoardFile file-path |
| デフォルト: | ScoreBoardFile logs/apache_status |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | MPM |
| モジュール: | beos, leader, mpm_winnt, perchild, prefork, threadpool, worker |
Apache は親プロセスと子プロセス間の通信にスコアボードを用います。 この通信機能にファイルを必要とするアーキテクチャもあります。 ファイルが指定されていなければ、Apache はまずメモリ上 (匿名共有メモリ) にスコアボードを作ろうとし、それが失敗すると ディスク上にファイル (ファイルベースの共有メモリ) を作ろうとします。 このディレクティブを指定すると、Apache は必ずディスクにファイルを生成します。
例
ScoreBoardFile /var/run/apache_status
ファイルベースの共有メモリは、サードパーティー製のアプリケーションで スコアボードに直接アクセスする必要がある場合に役に立ちます。
ScoreBoardFile を使う場合、
RAM ディスク上に置くとスピードが向上するでしょう。
しかし、ログファイルの設置位置や
セキュリティ
と同様の注意点があるので、注意してください。
参照
ServerLimit ディレクティブ
| 説明: | 設定可能なサーバプロセス数の上限 |
|---|---|
| 構文: | ServerLimit number |
| デフォルト: | 詳細は使用法を参照 |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | MPM |
| モジュール: | leader, perchild, prefork, threadpool, worker |
prefork MPM の場合は、このディレクティブは
Apache プロセス稼働中における
MaxClients
に設定可能な上限値を設定することになります
(訳注: prefork の場合は同時クライアント数 = サーバプロセス数なので)。
worker MPM の場合には、このディレクティブは
ThreadLimit
ディレクティブと組み合わせて、
Apache プロセス稼働中における
MaxClients
に設定可能な上限値を設定することになります。
このディレクティブを変更して再起動(訳注: apachectl
restart)しても無視されますが、
MaxClients
は再起動で変更することができます。
このディレクティブを使用する際は特に注意してください。
ServerLimit が必要以上に大きな値に
設定された場合は、余計な未使用共有メモリが割り当てられます。
ServerLimit と
MaxClients
がシステムの扱える範囲を越えた設定値になっていると、
Apache は起動しないか、起動しても不安定になるでしょう。
prefork MPM では、
MaxClients
を 256 (デフォルト) よりも大きな値に設定する必要がある時にだけ使用してください。
希望の MaxClients
数とくらべて、必要以上に大きな値を指定することは避けてください。
worker, leader,
threadpool MPM では、
MaxClients と
ThreadsPerChild
の設定で 16 サーバプロセス (デフォルト)
以上必要になる場合にのみ使用してください。希望の
MaxClients と
ThreadsPerChild
とくらべて、必要となるサーバプロセス数以上に大きな値を
設定することは避けてください。
perchild MPM では、
NumServers を 8 (デフォルト)
よろいも大きな値に設定する必要があるときにのみ使用してください。
注意
ServerLimit 20000 という制限付きでコンパイルされています
(prefork MPM では 200000) 。
これはスペルミスによって誤って酷い状況になるのを、
回避するための処置です。
参照
ThreadLimit ディレクティブ
| 説明: | 設定可能な子プロセス毎のスレッド数の上限を 設定します |
|---|---|
| 構文: | ThreadLimit number |
| デフォルト: | 詳細は使用方法を参照 |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | MPM |
| モジュール: | leader, mpm_winnt, perchild, threadpool, worker |
| 互換性: | Apache 2.0.41 とそれ以降の mpm_winnt
で利用可能 |
このディレクティブは
Apache プロセス稼働中における
ThreadsPerChild
に設定可能な上限値を設定します。再起動時にこのディレクティブの値を
変更しても無視されますが、
ThreadsPerChild
は再起動中に、このディレクティブで指定された上限値まで
変更することができます。
このディレクティブを使用する際は特に注意してください。
ThreadLimit が
ThreadsPerChild
よりもずっと大きな値に設定された場合は、
余計な未使用共有メモリが割り当てられてしまいます。
ThreadLimit が
ThreadsPerChild
の両方がシステムの扱える範囲を超えている場合は、
Apache は起動しないか、起動したとしても不安定になるでしょう。
このディレクティブの値は今使用している Apache の ThreadsPerChild の予想上限値を
超えた値には設定しないでください。
ThreadLimit のデフォルト値は
mpm_winnt のときは 1920 で、
他の場合は 64 です。
注意
ThreadLimit 20000 (mpm_winnt
の場合は ThreadLimit 15000 )
という制限付きでコンパイルされています。
これはスペルミスによって誤って酷い状況になるのを、
回避するための処置です。
ThreadStackSize ディレクティブ
| 説明: | クライアントのコネクションを受け持つスレッドが使用する スタックのバイト数 |
|---|---|
| 構文: | ThreadStackSize size |
| デフォルト: | NetWare では 65536。他の OS では違った値 |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | MPM |
| モジュール: | leader, mpm_netware, mpm_winnt, perchild, threadpool, worker |
| 互換性: | 2.1 以降 |
クライアントコネクションを受け持ち、コネクション処理に必要なモジュールの
呼び出しを行なっているスレッドの、(自動変数用の) スタックサイズは
ThreadStackSize ディレクティブで指定します。
大抵の場合 OS の指定しているスタックサイズのデフォルト値は
適切なものですが、調整が必要になる場合もあります:
- スレッドスタックサイズのデフォルト値が比較的小さく設定されている
プラットホーム (例えば HP-UX) では、自動変数用の領域で大きな容量を
使用するサードパーティ製モジュールのために Apache がクラッシュする
場合もあります。そのモジュールは他のプラットホームでは
スタックサイズが大きいために、快調に動作するかもしれません。
このタイプのクラッシュは、
ThreadStackSizeで OS のデフォルト値より大きな値を指定することで解決します。 サードパーティ製モジュールでこの処置が必要であると記載されている 場合か、Apache の出力するメッセージでスレッドスタックサイズが 小さすぎると指摘されている場合にのみ、この調整をしてください。 - デフォルトスレッドスタックサイズが、Web サーバ用途に必要な量よりも
明らかに大きすぎる場合、
ThreadStackSizeを OS のデフォルト値よりも小さな値にすることで、子プロセスあたりの スレッド数をより多く持たせられるようになります。 このタイプの調整は、テスト環境でウェブサーバを完全に テストできる場合に限って行なうべきです。 まれに多数のスタックが要求されるリクエストを受けることがあるかも しれないからです。 Web サーバの設定を変更すると、現在のThreadStackSizeの設定が取り消される場合があります。
