コネクション受付制御のパラメータ
接続可能なコネクション数を制限するMaxClients
Webサーバは、1台のクライアントからのリクエストに対してのみ、サービスを提供するのではなく、同時に複数のクライアントからのリクエストを受け入れ、サービスを提供する。したがって、接続するクライアントが増加するとリクエスト数も増加するため、応答時間が増大する可能性が高くなる。
そこで、Webサーバではクライアントに対する応答時間の増大を防止するため、同時接続可能なコネクション数の制限を行っている。Apacheにおいて、その設定を行うのが「MaxClients」ディレクティブである。デフォルト値は256に設定されている。
また、このMaxClientsに設定可能な上限値を設定するのは「ServerLimit」ディレクティブであり、デフォルト値はMaxClientsと同様に256である。当然、MaxClientsをデフォルト値より大きくする場合は、ServerLimitの設定も変更しなければならない。
MaxClients制限数を超えているときに接続してきたコネクションは、棄却されるのではなく、「ListenBacklog」ディレクティブ(デフォルト値は511)で設定した数まで処理待ちとしてキューに格納され保留状態になる。キューに格納されたコネクションは、確立中のコネクションが解放されしだい順次リクエストに応答する仕組みになっている(図2)。
コネクション数とクライアント数
ここで注意しなければならないのは、同時接続可能なコネクション数とクライアント数は等価ではないということである。一般的なWebブラウザでは複数のコネクションを確立しており、HTTP/1.1では標準2コネクションになっている。
例えば、MaxClientsで設定した値がSの場合、すべてのクライアントが2コネクションずつ確立すると、同時接続可能なクライアント数は最大S/2人となる。また、ListenBacklogで設定を行ってもOSによる制限の方が優先され、さらに、その制限はOSにより異なるので注意しなければならない。
以上で説明したように、MaxClientsにて同時コネクション数の上限を設けることにより、クライアントに対する応答時間の増大を抑えることができる。
しかし、クライアントに対する応答時間の短縮を求めるあまりMaxClientsの値を小さく設定しすぎると、サーバの処理能力に余裕があるのに棄却率が増大してしまう可能性が高くなる。
反対にMaxClientsの値を大きく設定すると、棄却率を小さく抑えることは可能だが、サーバの処理能力を超えたリクエストが到着する可能性が大きくなり、応答時間が増大してしまう。
よって、サーバが有している処理能力や提供しているWebコンテンツ、ユーザに提供したい応答時間、Webサイトとして許容できる棄却率などを考慮し値の設定を行わなければならない。
次のページでは、同一コネクションを利用した複数ファイル転送に関するKeepAliveのパラメータ設定について解説する。