7.5.1 Persistent Connectionによる通信制御
Persistent Connectionは,WebクライアントやリバースプロキシとNIO HTTPサーバ間で確立したTCPコネクションを持続して,複数のHTTPリクエスト間で使用し続けるための機能です。Persistent Connectionを使用することによって,コネクション接続に掛かる時間を短縮し,処理時間の短縮と通信トラフィックの軽減を図れます。
NIO HTTPサーバでは,次に示す項目を設定することで,Persistent Connectionによる通信制御を実現します。
-
Persistent Connectionのリクエスト処理回数の上限値
Persistent Connectionのリクエスト処理回数の最大値を設定することで,同じWebクライアントから連続してリクエスト要求があった場合の処理を制御します。
Persistent Connectionのリクエスト処理回数が指定した上限値を超えた場合,リクエスト処理終了後にコネクションを切断します。これによってリクエスト処理スレッドを特定のクライアントに占有し続けられることを防げます。
-
Persistent Connectionのタイムアウト
Persistent Connectionのリクエスト待ち時間にタイムアウトを設定することで,Persistent Connectionのリクエスト待ち時間を制御します。指定したタイムアウト時間を超えてリクエスト処理要求がない場合は,TCPコネクションを切断します。これによって,使用されていない状態でTCPコネクションが占有され続けることを防げます。また,Persistent Connectionのリクエスト待ち時間に0を指定してタイムアウトをしない設定にしている場合でも,リクエスト処理回数の上限値を超えたリクエスト要求があるとコネクションが切断されます。
WebサーバとWebコンテナ間のTCPコネクションは,次の設定で常設コネクションとすることを推奨します。
-
webserver.connector.nio_http.keep_alive.max_requestsプロパティ(TCPコネクションを持続したままの連続接続回数の上限)を0(上限なし)に設定してください。デフォルト値は0です。
-
webserver.connector.nio_http.keep_alive.timeoutプロパティ(TCPコネクションを持続した状態での,リクエスト待ち時間)を0(タイムアウトなし)に設定してください。デフォルト値は0です。