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