KeepAliveディレクティブ:HTTP KeepAliveを有効にする

KeepAlive ディレクティブはクライアントとサーバの通信において HTTP KeepAlive を有効にするかどうかを設定します。 KeepAlive が有効になっていると、一度 TCP の接続が行われると同じ接続内で複数のリクエストのやり取りを行えます。ここでは Apache の KeepAlive ディレクティブの使い方について解説します。

(Last modified: )

KeepAliveとは

Apache における KeepAlive について簡単に解説を行います。 KeepAlive が無効になっている場合、最初に TCP の接続(コネクション)を確立したあとで、リクエストの送信及びレスポンスの送信が行われ、その都度 TCP の接続がいったん切れます。複数のリクエストを送る場合にはリクエストのたびに TCP の接続を確立する必要があります。

KeepAliveとは(1)

KeepAlive が有効になっている場合、最初に TCP の接続(コネクション)を確立したあとで、接続を切らずにクエストを送信及びレスポンスの送信を複数回行うことができます。

KeepAliveとは(2)

例えばリクエストするページの中に画像が複数含まれていた場合、ページのリクエストのあとで画像のリクエストを画像の数だけ送信します。 KeepAlive が無効になっている場合はその都度 TCP の接続が行われるの対して KeepAlive が有効になっていると一度 TCP の接続をしたあとで複数のリクエストを送信できるため、効率よく通信のやり取りを行うことができます。

KeepAlive では TCP の接続が行われたままになっていますが、クライアントからの次のリクエストが指定した時間内に送信されてこない場合に TCP の接続が切れます。次のリクエストを何秒待つのかについては KeepAliveTimeout ディレクティブで設定します。

また一度の TCP の接続でリクエストを送信できる回数の最大数を設定することもできます。最大数の設定は MaxKeepAliveRequests ディレクティブで設定します。

KeepAliveディレクティブの使い方

KeepAlive ディレクティブは TCP の接続を確立したあと複数のリクエストの送信を行えるようにするかどうかを設定します。書式は次のとおりです。

KeepAlive On|Off

記述できる場所は httpd.conf, VirtualHost です。

デフォルトでは On に設定されています。例えば Off に変更する場合は次のように記述してください。

KeepAlive Off

httpd.conファイルでの記述

KeepAlive ディレクティブについては httpd.conf ファイルではなく extra/httpd-default.conf ファイルに記述されています。

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

デフォルトでは httpd.conf ファイル内で extra/httpd-default.conf ファイルを読み込んでいません。

# Various default settings
#Include conf/extra/httpd-default.conf

先頭の # を削除して httpd.conf ファイルで extra/httpd-default.conf ファイルを読み込むように変更したうえで、 extra/httpd-default.conf ファイルで KeepAlive ディレクティブの設定を変更するか、直接 httpd.conf ファイルのいずれかの場所に KeepAlive ディレクティブの設定を記述してください。

-- --

Apache の KeepAlive ディレクティブの使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。