Apacheの応答速度チューニング KeepAliveについて
Apacheの設定ファイルである httpd.conf では KeepAlive On となっていますが
この設定を On にしたほうが早い場合と Off にしたほうが早い場合があるようです。
詳しく調べてみました。
Apache の公式ドキュメントでは
KeepAlive を有効にした際には、複数のリクエストが同じ TCP の接続で送られ長時間接続する HTTP セッションを提供します。
たくさんの画像が含まれる HTML ドキュメントなどの場合によっては遅延時間が 50% 短縮される結果もでています。
と書かれております。
しかし、こちらのサイトやこちらのサイトでは KeepAlive を無効にした方が遅延時間が短縮されると書かれております。
そこで KeepAlive を有効・無効にしたほうが良い条件をまとめてみます。
KeepAlive を有効にしたほうが良い場合
→画像などが沢山あるページ
→画像などがたくさんある場合に1つ1つにアクセスする際に接続と切断を繰り返さないようにするため
KeepAlive を無効にしたほうが良い場合
→1連のリクエストの処理に時間がかからない場合
→KeepAlive の TCP コネクションが切れる時間は KeepAliveTimeout にて静的に決定しているため待ち時間が発生する。
→リクエストがあまり発生しないページ
→リクエストが発生しないため、一定時間コネクションを確保しても無駄にプロセス数が増えてしまうから
上記の結果をまとめると
動的なページ用のWWWサーバは KeepAlive をOFFにし
静的なページ用のWWWサーバは KeepAlive をONにするのが良いようです。
最後に KeepAlive について書かれた論文が出ているようなので、リンクを張って締めくくりとさせていただきます。
リクエスト間隔を考慮したウェブサーバのkeep-alive 時間の自動設定