このディレクティブが Default
に設定されていれば、コンパイル時に選択されたデフォルト値が使われます。
他の使用可能なメソッドの一覧は下にあります。
全てのメソッドが全てのプラットホームで使用可能であるわけではない、
ということに注意してください。
使用可能でないメソッドが指定された場合は、
使用可能なメソッドの一覧を含んだメッセージが
エラーログに出力されます。
flock
flock(2)
システムコールを使います。fcntl
fcntl(2)
システムコールを使います。posixsem
pthread
sysvsem
コンパイル時にシステムのデフォルトに選ばれたものが何かを見たい場合は、
debug
に設定するとよいでしょう。デフォルトの
ほとんどのシステムにおいては、pthread
オプションが
選ばれていると、子プロセスが AcceptCntl
mutex を
保持しているときに異常終了した場合、サーバはリクエストへの応答を
停止してしまいます。これが発生した場合は、サーバを復旧させるためには
手動で再起動させる必要があります。
Solaris は例外で、Apache も使用している、子プロセスが mutex を 保持して異常終了した後に mutex を復旧させるための機構を提供をしています。
御使用のシステムが pthread_mutexattr_setrobust_np()
関数を
実装している場合は、pthread
オプションを安全に使用できる
可能性があります。
Apache がコアダンプする前に移動を試みるディレクトリを制御します。
デフォルト値は
Apache が root として起動されて、別のユーザの権限に以降した場合は
Linux のカーネルはディレクトリがプロセスの権限で書き込み可能な場合でさえも
コアダンプを無効にします。Apache (2.0.46 以降) は
Linux 2.4 以降ではコアダンプを行なうように再指定しますが、それは
安全上の理由から、--enable-exception-hook
configure
オプションを有効にした場合にのみ、このディレクティブを利用できます。
外部モジュールをプラグインして、子がクラッシュした後に何か実行できるような
フックを有効にします。
このような外部モジュールは、既に二つ存在していて、
mod_whatkilledus
と mod_backtrace
がこのフックを活用します。これらの詳細については Jeff Trawick
さんの EnableExceptionHook site を参照してください。
root
権限で起動されている必要があります。
非 root ユーザでサーバを起動した場合は、指定したグループに変化できずに、
結果的に起動したユーザの属するグループで実行されることになります。
unix-group は次のうちのいずれかです:
#
に続いてグループ番号サーバを実行するために特定の新しいグループを設定することを
お薦めします。nobody
を使用する管理者もいますが、
可能であったり望ましい訳では必ずしもありません。
正確にどんなことをやっているのか、その危険性を知らないで、
root
に 設定しないでください。
特記事項: このディレクティブを
サーバが
Apache 2 では、
複数のアドレスとポートに対して listen するように、
複数の
例えば、サーバが 80 番ポートと 8000 番ポートの両方の コネクションを受け入れる場合は、次のようにします。
二つの特定のインターフェースとポート番号からのコネクションを 受け入れるようにするには、次のようにします。
IPv6 アドレスは角括弧で囲まなければなりません。 例えば次の例のようにです。
protocol オプション引数は通常の設定では必要ありません。
無指定の場合、443 番ポートには https
が、他のポートには
http
がデフォルト値として使用されます。
protocol 指定は、どのモジュールがリクエストを処理するかを決定し、
非標準なポートで運用している際にのみ protocol 指定が必要になります。
たとえば https
なサイトを 8443 番ポートで運用している場合 :
Address already in use
というエラーメッセージを受けることになります。
保留状態のコネクションのキューの最大長です。
一般的には調整する必要はありませんし、調整は望ましくありません。
しかし、TCP SYN フラッドアタックの状況下におかれる場合に、
増やした方が望ましいシステムもあります。
listen(2)
システムコールのバックログパラメータを
ご覧下さい。
この値は OS により、小さな数に抑えられます。 値は OS 毎に異なっています。また多くの OS では、 バックログとして指定されている値ちょうどまで使っているわけではなく、 設定されている値に基づいて (通常は設定値よりも大きな値を) 使っていることに注意してください。
fcntl
や flock
に設定されて使用されている場合に、使用されるロックファイルへのパスを
logs
ディレクトリが NFS
でマウントされている場合などに値を変えます。
なぜならロックファイルはローカルディスクに
保存されなければならないからです。
メインサーバプロセスの PID がファイル名に自動的に付加されます。
/var/tmp
といった、誰でも書き込めるディレクトリにファイルを
置かない方がよいです。なぜなら、サーバが起動時に作成する
ロックファイルの作成自体を妨害することによって、
誰でもサービス拒否アタックを引き起こすことができるからです。
スレッドを用いないサーバ (すなわち 256
で、これを増加させたい場合は、
スレッドを用いるサーバや、ハイブリッドサーバ (すなわち
50
です。
ハイブリッド MPM でのデフォルト値は 16
25
倍 (
free()
が呼ばれない限り、
主メモリアロケータが保持し続けられるメモリの最大量free()
が呼ばれない限り、
主アロケータが保持できる空のメモリの最大値をキロバイト単位で設定します。
設定されていないか、零に設定されているときは、無制限になります。
0
に設定されている場合は、プロセスは期限切れにより終了することはありません。
0
です。
アイドルなスレッドの最大数です。異なる MPM ではそれぞれ、 このディレクティブは異なる取り扱われ方をされます。
MaxSpareThreads 10
です。
この MPM はアイドルスレッド数を、それぞれの子プロセスごとに監視します。
子プロセスにアイドルスレッドが多すぎる場合は、
サーバはその子プロセスに含まれるスレッドを終了し始めます。
MaxSpareThreads 250
です。
この MPM はアイドルスレッド数をサーバ全体で監視します。
サーバでアイドルスレッド数が多すぎる場合は、
この数字よりも少ない数になるまで子プロセスを終了します。
MaxSpareThreads 100
です。
この MPM はシングルプロセスで実行されますので、
スペアスレッド数もサーバ全体で勘定します。
MaxSpareThreads 50
です。10
です。
リクエストに応答するスレッド数の最小値です。 異なる MPM ではそれぞれ、 このディレクティブは異なる取り扱われ方をします。
MinSpareThreads 5
で、
アイドルスレッド数を子プロセス毎に監視します。
もし子プロセスに十分な数のスレッドがなければ、
サーバはその子プロセスに新しいスレッドを作り始めます。
ですから、10
に、5
にした場合は、最小でも 50 のアイドルスレッドが
システム上にあることになります。
MinSpareThreads 75
で、
アイドルスレッド数をサーバ全体で監視します。
もしサーバに十分な数のアイドルスレッドがなければ、
アイドルスレッド数がこの数よりも大きくなるまで
新しい子プロセスが生成されます。
MinSpareThreads 10
で、
シングルプロセス MPM ですので、サーバ全体で管理されます。
MinSpareThreads 1
です。5
です。
Apache は親プロセスと子プロセス間の通信にスコアボードを用います。 この通信機能にファイルを必要とするアーキテクチャもあります。 ファイルが指定されていなければ、Apache はまずメモリ上 (匿名共有メモリ) にスコアボードを作ろうとし、それが失敗すると ディスク上にファイル (ファイルベースの共有メモリ) を作ろうとします。 このディレクティブを指定すると、Apache は必ずディスクにファイルを生成します。
ファイルベースの共有メモリは、サードパーティー製のアプリケーションで スコアボードに直接アクセスする必要がある場合に役に立ちます。
サーバは TCP バッファサイズを指定されたバイト数に設定します。 高速で高レイテンシな環境で (例 100ms 程度、大陸横断高速通信路など) 古い一般的な OS のデフォルト値を増やすのに非常に便利です。
0
にした場合、OS のデフォルト値が使用されます。
このディレクティブを使用する際は特に注意してください。
ServerLimit 20000
という制限付きでコンパイルされています
(200000
) 。
これはスペルミスによって誤って酷い状況になるのを、
回避するための処置です。
デフォルト値は MPM ごとに異なります。
StartServers 3
です。
5
で、
2
です。
起動時に生成されるスレッドの数です。 スレッド数は負荷に応じて動的に制御されますので、 通常はこの値を調整する理由はあまりないでしょう。
StartThreads 5
で、このディレクティブは起動時に
プロセス毎のスレッド数を追跡します。
StartThreads 50
で、
この場合プロセスは一つしかないので、
起動時にリクエストに応答するスレッドの総数となります。
StartThreads
10
です。
また、起動時に生成されるスレッドの総数にも反映されます。
このディレクティブは
Apache プロセス稼働中における
このディレクティブを使用する際は特に注意してください。
1920
で、
他の場合は 64
です。
ThreadLimit 20000
(ThreadLimit 15000
)
という制限付きでコンパイルされています。
これはスペルミスによって誤って酷い状況になるのを、
回避するための処置です。
このディレクティブは、それぞれの子プロセスで生成される
スレッド数を設定します。
子プロセスは開始時にこれらのスレッドを生成して、
その後は生成しません。
64
で、他の場合は
25
です。
クライアントコネクションを受け持ち、コネクション処理に必要なモジュールの
呼び出しを行なっているスレッドの、(自動変数用の) スタックサイズは
root
権限で起動されている必要があります。
非 root ユーザでサーバを起動した場合は、
権限の低いユーザへと変わることができず、
結局元のユーザのプロセスとして実行され続けます。
root
で起動した場合に親プロセスが root
として実行されているのは正常な動作です。
Unix-userid は次のどれかです。
このユーザは、外部に見せるように意図していないファイルに、
アクセス可能になってしまうような権限を持つべきではないですし、
同様に HTTP リクエストに対して応答するように意図していない
実行コードを、実行できるような権限を持つべきではないです。
サーバを実行するために特定の新しいユーザとグループを
設定することをお薦めいたします。
nobody
ユーザを使用する管理者もいますが、
これが常に望ましいわけではありません。
なぜなら nobody
ユーザは、システムで
他の役割を担っているかも知れないからです。
正確にどんなことをやっているのか、その危険性を知らないで、
root
に
設定しないでください。
特記事項: このディレクティブを