受け付け可能な同時リクエスト数を変更するには

概要

受け付け可能な同時リクエスト数とはx-Servletが同時に処理可能なリクエスト数を表します。
例えばAさんがPCブラウザを3つ立ち上げて、各ブラウザからリクエストを同時に送信した場合、現在処理しているリクエスト数は3であると認識します。

受け付け可能な同時リクエスト数の設定

受け付け可能な同時リクエスト数はxproxy.propertiesのmaxClientLimitで設定します。

設定値の範囲

設定値は以下の範囲で設定してください。

1以上 xservlet.licenseの<maxClient>値まで

<同時リクエスト数の上限値(xservlet.licenseの<maxClient>)>

x-Servlet Enterprise Edition Lite Edition Developer Edition Evaluation Edition(評価版)
同時リクエスト数の上限値 10000 50(注1) 30(注1) 10000(注1)

(注1)Version2.8.0 以上が対象となります。Version2.7.2 以下の場合はそれぞれ 5(Lite)、3(Developer)、2(Evaluation)となります。

動作

同時リクエスト数のカウント動作は xproxy.properties の「xproxyAcceptType」によって異なります。

Keep-Alive が OFF(xproxyAcceptType=1)の場合

  1. x-Servletがリクエストを受け取り、ソケットをオープンした時点でカウントが+1される。
  2. 変換処理を行い、携帯端末にレスポンスしたあとコネクションがクローズされるとカウントが-1される。
    (端末側からの切断やエラー発生時の切断処理でもカウントは-1される)

上記処理1の時にカウントが maxClientLimit を越えた場合は以下の動作となります。

  • error.log に「MaxClientLimit Over.」のエラーを出力する。
  • 「Max client over」を端末に対して返却し切断する。

Keep-Alive が ON(xproxyAcceptType=2)の場合 [Version2.9.2まで]

  1. x-Servletがリクエストを受け取り、ソケットをオープンした時点でカウントが+1される。
  2. リクエストはカウントとは関係なく処理キューに格納される。
  3. 別スレッドで処理キューに入っているリクエストを処理する。
  4. コネクションがクローズされるとカウントは-1される。
  5. コネクションは「requestProcessor.maxKeepAliveRequest」の回数分だけのリクエストはクローズしない。
    (Connection: close ヘッダをつけない)

上記処理1の時にカウントが maxClientLimit を越えた場合は以下の動作となります。

  • error.log に「MaxClientLimit Over.」のエラーを出力する。
  • 端末にはエラーを返さずに変換処理は続行される。

Keep-Alive が ON(xproxyAcceptType=2)の場合 [Version2.10.0以降]

  1. x-Servletがリクエストを受け取り、ソケットをオープンした時点でカウントが+1される。
  2. リクエストはカウントとは関係なく処理キューに格納される。
  3. 別スレッドで処理キューに入っているリクエストを処理する。
  4. コネクションがクローズされるとカウントは-1される。
  5. コネクションは「requestProcessor.maxKeepAliveRequest」の回数分だけのリクエストはクローズしない。
    (Connection: close ヘッダをつけない)

上記処理1の時にカウントが maxClientLimit を越えた場合は以下の動作となります。

  • error.log に「MaxClientLimit Over.」のエラーを出力する。
  • 「Max client over」を端末に対して返却し切断する。

<例1>

xservlet.licenseの<maxClient>=10000
xproxy.propertiesのmaxClientLimit=5000000
最大同時リクエスト数=10000

<例2>

xservlet.licenseの<maxClient>=10000
xproxy.propertiesのmaxClientLimit=500
最大同時リクエスト数数=500

上記のように<maxClient>で設定されている数以内でmaxClientLimitを設定することができます。

同時リクエスト数を超過した場合

x-Servletが許可している同時リクエスト数を超過した場合、x-Servletは503エラーを端末に返却します。

この動作は

  • Version2.10.0 以降
  • Version2.9.2 以前で Keep-Alive が OFF(xproxyAcceptType=1)の場合

のみです。

デフォルトの状態では同時リクエスト数超過時に端末の画面に"Max client over"という文字列が表示されます。(端末によっては端末独自のエラー画面を表示するものがあります)
この文字列は conf/maxClientOver.xml の <ResponseBody> を修正することにより同時リクエスト数超過時のメッセージを変更することができます。

【エラー画面】

注意点

  • Version2.9.2以下で error.log に「MaxClientLimit Over.」のエラーが出力されている環境でバージョンアップを行うとリクエスト数が超過した時の挙動が変わりますのでmaxClientLimitを増やしてください。
  • Version2.9.2以下で Keep-Alive が ON(xproxyAcceptType=2)の場合は同時リクエスト数が超過しても受け付けは行われます。
    webサーバ側が高負荷状態になり処理に遅延が発生してもリクエストを受け付けるのでx-Servletも高負荷になる可能性があります。
    その場合はロードバランサによるアクセス制御が必要となります。
TOP