コラム
line

s


KeepAliveの有効性

KeepAliveとは

 HTTP通信はTCP/IP上のプロトコルの1つで、通信の為にクライアント側から サーバ側へTCPコネクションを確立します。通常HTTP通信では、1回のリクエストとレスポンスが終わるとコネクションを切断します。

 しかし、1リクエストごとにコネクションを切断していたのでは効率が悪い為、KeepAliveという機能が考え出されました。 KeepAliveが有効な場合、一度コネクションを確立すれば、条件を満たすまで接続を保持し、 1つのTCPコネクション上で、リクエストとレスポンスを繰り返す事ができます。


KeepAliveの有効・無効について

 一般的に1つのWebページをブラウザで表示する場合、メインのHTMLファイルだけでなく、 そのHTML上で表示する画像ファイルや、css・javascript等の複数のファイルが必要となる場合がほとんとであり、 その全てのファイルに対してリクエストが発生します。

 その際、KeepAliveが無効になっていると、その全てのファイルに対してTCPコネクションの 開始・切断が発生する為、それだけCPU等のリソースを消費し、レスポンス時間も遅くなります。
 しかしKeepAliveが有効であれば、一度確立したTCPコネクションを条件が満たされるまで保持し、複数のファイルに対してリクエストを実行できます。

 ただしKeepAliveは、コネクション終了の判定を行いにくい為、 無意味にコネクションを保持し、逆にパフォーマンスを低下させてしまう場合もあるので、KeepAliveの利用には注意が必要です。


KeepAliveの有効・無効のレスポンス時間の比較

 実際にテストを実施して、レスポンス時間を測定した結果は「表1」になります。

 テスト環境としては、Webサーバ用とクライアント用の2台のPCを用意し、 Webサーバ側には代表的なソフトウェアであるApacheをインストールし、クライアント側には負荷発生ツールをインストールしました。
 用意したWebページには、メインのHTMLファイルと、そのHTMLファイル上で表示する画像ファイルが約30個あります。 クライアント側で負荷発生ツールを使用し、そのHTMLファイルに対して同時に30回のリクエストを発生させます。 30回のリクエストを1セットとして、念の為、3セット実行しました。

KeepAlive有効・無効の比較

 「表1」の結果から、短い時間に多くのリクエストが発生する場合、KeepAliveを有効にした場合の方が、1.6倍程度レスポンス時間が速い事がわかります。

 ※動的CGIもキャッシュできる弊社製品TrafficCache2でKeepAliveを有効にした場合、ApacheでKeepAliveを有効にした場合と同程度(約14秒)の速度結果でした。


line
Copyright ©2010. ForwardNetwork Co.,Ltd. All rights reserved.