httpd.conf のグローバルな環境設定に関する主なディレクティブには、次のようなものがある。
httpd のベースディレクトリを指定する。
ServerRoot directory
- default : "/etc/httpd"
- directory
conf および logs サブディレクトリ (シンボリック リンク可) がある場所へのパスを記述する。
- 省略しても /etc/httpd が参照されるが、明示しておく方が賢明だろう。
データ送受信時の待ち時間を秒単位で設定する
Timeout 秒数
- default : 300
- 設定値は次の 3 つに適用される。
- GET リクエスト受信完了までの時間。
- POST, PUT リクエスト時の、次のパケットまでの間隔。
- レスポンスに対する確認通知 (ACK) までの時間。
- デフォルト値より小さい値にしないことが推奨されている。
HTTP セッションの持続的な接続を、有効または無効に設定する。
KeepAlive On|Off
- default : Off
パフォーマンスを考慮すると On が望ましい。
- パラメータは、On(有効) または、Off(無効) を設定する。
- On(有効) とした場合の 1 TCP コネクションあたりのリクエスト許容数は MaxKeepAliveRequests で指定する。
KeepAlive ディレクティブが On の時、1 回の接続 (TCP) で受付を許容するリクエストの最大数を指定する。
MaxKeepAliveRequests 許容リクエスト数
- default : 100
- 設定値を超過した場合、TCP コネクションは切断される。
- 0 を指定すると受け付けるリクエスト数は無制限になる。
KeepAlive ディレクティブが On の時、次のリクエストまでの待ち時間を秒単位で指定する。
KeepAliveTimeout 秒数
- default : 15
- リクエスト受付後は、Timeout ディレクティブが適用される。
子プロセスの待機数を制御する。
StartServers プロセス数
- default : 8
- 起動時に生成される httpd の子プロセス数を設定する。
MinSpareServers プロセス数
- default : 5
- 待機する子プロセスの最小数を設定する。
MaxSpareServers プロセス数
- default : 20
- 待機する子プロセスの最大数を設定する。
- MinSpareServers より小さい値を設定した場合、MinSpareServers + 1 に調整される。
httpd はクライアントのリクエストに即応するため、幾つかの子プロセスが常に待機状態であるよう制御される。
(子プロセス数は負荷に応じて動的に増減される)
httpd の動作は概ね次の通り。
- 最初に起動される httpd プロセスは、root 権限で起動されてマスター プロセスとなる。
- マスター プロセスは StartServers ディレクティブで指定された数の子プロセスを、User, Group ディレクティブ指定の権限で起動する。
- マスター プロセスは子プロセスの状態(ビジーまたは待機)を監視する。
- 待機中の子プロセスが MinSpareServers 以下になるとマスター プロセスは新しい子プロセスを起動する。
- 待機中の子プロセスが MaxSpareServers 以上になるとマスター プロセスはいくつかの子プロセスを終了させる。
許容可能な最大子プロセス数を設定する。
MaxClients プロセス数
- default : 150
- 子プロセスの許容数を設定する。
個々の子プロセスが扱うリクエストの制限数を設定する。
MaxRequestsPerChild リクエスト数
- default : 1000
- 制限数のリクエストを処理した子プロセスは、マスター プロセスにより終了させられる。
- リクエスト数 に 0 を指定すると、扱うリクエスト数は無制限になる。
- 0 以外を設定しておけば予想外のメモリ リークが発生した場合にも、子プロセスによるメモリ消費を抑制できる。
リクエストを待ち受ける IP アドレスとポート番号を指定する。
Listen [IPaddress:]port
- default : 0.0.0.0:80
デフォルトは、全 IP インターフェースのポート 80 を指定している。
- ポート番号 (port) のみを指定することも可能。
その場合、全 IP インターフェースの指定ポート番号でリクエストを待ち受ける。
- 複数の Listen ディレクティブを使用して、複数のアドレスとポートを指定可能。
- Listen ディレクティブ未設定の場合、httpd の起動は正常に行えるがリクエストには応答しない。
起動可能な子プロセス数を制限して、リクエストが輻輳した場合の子プロセス数増大を防止する。