接続数は、運用するシステムによって以下のように設定します。
Webコンテナの負荷が高く処理できないリクエストは、時間がかかってもかまわないので、正常に処理させたい場合
項目 | 設定値 |
---|---|
最大接続数 | リクエストを受け付けることができるだけの十分に大きな値を設定 |
キューサイズ | 処理待ちのリクエストを保持することができるだけの十分に大きな値を設定 |
Webコンテナの負荷が高く処理できないリクエストは、長時間待たせるのではなく、切断したい場合
項目 | 設定値 |
---|---|
最大接続数 | リクエストを受け付けることができるだけの十分に大きな値を設定 |
キューサイズ | 最大接続数と同じ値を設定 |
接続数に関する設定項目について、以下に説明します。
本項目の値を増やすと、Webコンテナが同時に受け付けることができるリクエスト数を増やすことができます。運用中に高負荷な状態となった場合に想定される、クライアントからの同時リクエスト数を指定しておくことを推奨します。
最大接続数は、asadminコマンドを使用して変更できます。詳細については、以下を参照してください。
「9.8.3 ネットワーク設定の定義項目」の「最大接続数(max-connections-count)」
注意
最大接続数に設定された値は、Webコンテナが使用するHTTPリスナーのソケットのバックログに設定されます。ソケットのバックログに設定した値は、OSによって有効となる範囲が決まっているため、最大接続数に設定した値がそのまま有効になるわけではありません。
ソケットのバックログの有効範囲については各OSのドキュメントを参照してください。
なお、Windowsの場合、200より大きな値を設定しても有効になりません(200として動作します)。
本項目の値を増やすと、Webコンテナが受け付けたクライアントからのリクエストを、Webコンテナが処理できるようになるまでの間保持する数を増やせます。
運用時に一時的に負荷が高くなり、同時処理数を超えるリクエストを受け付けることが想定される場合は、同時処理数を抑えて、キューサイズに大きな値を設定することで、サーバー全体のレスポンスの悪化を防ぐことができます。
Webサーバーと連携している場合にキューサイズを超えてリクエストの処理要求があった場合、WebサーバーがクライアントにHTTPステータスコード502を返却します。
Webサーバーと連携していない場合にキューサイズを超えてリクエストの処理要求があった場合、クライアントとの接続が切断されます。
設定ポイント1
運用時に一時的に負荷が高くなり、クライアントからのリクエスト処理に失敗し、かつサーバーログに以下のメッセージが出力されている場合は、キューサイズを大きくしてください。
doSelect exception |
設定ポイント2
キューサイズを増やしてリクエストを処理することができるだけの十分に大きなキューを用意した場合、クライアントからのリクエストに対するレスポンスに遅れが生じる可能性があります。Webサーバーと連携している場合は、Webサーバコネクタの送受信タイムアウト値を増やしてください。
設定ポイント3
キューにはタイムアウトが存在します。タイムアウトを経過してもスレッドプールが空かない場合、リクエストは処理されることなく接続が切断されます。アプリケーション処理が長くなり、キューで待機させる時間を伸ばしたい場合は、タイムアウト値を長くするようにしてください。詳細は「9.8.3 ネットワーク設定の定義項目」の「HTTP接続のタイムアウト(timeout-seconds)」を参照してください。
キューサイズは、asadminコマンドを使用して変更できます。詳細は、以下を参照してください。
「9.8.16 スレッドプールの定義項目」の「キューサイズ(max-queue-size)」