9.8. KeepAlive に関する設定

Web ブラウザとの KeepAlive 接続に関するディレクティブを解説します。これらのディレクティブは、Apache のパフォーマンスに影響します。パフォーマンスは、その他にも MPM の設定(項9.6)、通信回線の帯域、提供するコンテンツのデータ量、Web サーバーへのアクセス数、サーバーのメモリや CPU などのハードウェア資源など様々な要因に左右されます。環境に応じて適切な値を総合的に検討する必要があります。

KeepAlive On|Off

通常、HTTP プロトコルによる接続は 1 回の HTTP リクエストごとに接続/切断を繰り返します。しかし、リクエストの度に TCP コネクションを確立するのは非効率なため、HTTP/1.1 では TCP コネクションを持続させる KeepAlive と呼ばれる機能が実装されています。このディレクティブは、その KeepAlive 機能を有効にするかどうかを指定します。システムの状況により異なりますが、Web サーバーの性能を向上させるには、初期値のまま On に設定することを推奨します。

MaxKeepAliveRequests number

KeepAlive ディレクティブの値を On にした場合、1 回の接続で処理できるリクエスト数を指定します。初期値は 100 です。リクエスト数を無制限に設定したい場合は、0 を指定します。

KeepAliveTimeout seconds

KeepAlive ディレクティブの値を On にすると、KeepAlive 機能により、TCP コネクションは持続します。このディレクティブでは、そのコネクションを切断するためのタイムアウト時間を秒単位で指定します。ここで指定した時間内にクライアントからのリクエストがなければ、コネクションは切断されます。TCP 接続を持続することでリクエストに対するレスポンスは早くなりますが、この値をあまり大きく設定すると、Web サーバーのメモリに負荷を与えることになりますので注意してください。

Timeout seconds

クライアントとの通信時におけるタイムアウト時間を秒単位で設定します。Apache は、以下の 3 つの時間をタイムアウト時間として扱います。初期値は 300 秒です。ネットワークが遅い場合などはこの値を大きくしますが、昨今のネットワーク環境では特に変更する必要はありません。

  • サーバーが GET リクエストを受信するまでの待ち時間

  • POST か PUT リクエストで TCP パケットを受信するまでの待ち時間

  • TCP パケットに応答する ACK パケットの待ち時間