【efw紹介】高負荷対応のTomcat環境構築

WEBシステムの「同時接続」ってなに?

同時接続という言葉は、WEBシステム開発によく触れますが、定義不明のまま乱用されるケースがよくあります。今回はちょっと関連用語を含んで、厳密な定義を作ってみます。

項目説明
最大ログインユーザ数 ログイン後、セッション情報を作成され、一定メモリを占められます。システムの方式により、セッションメモリが大きい場合、セッションタイムアウト期間内ログインするユーザの数を注意する必要です。
最大同時接続数 TCP接続は、「Established」から「Closed」までの間、「接続中」と見なします。ある時点で、接続中のコネクションの数は同時接続数です。一回画面操作で2つの接続が発生します。※jspと各種静的コンテンツ。出力完了後、15秒接続を維持します。 最大同時接続数を超える場合、サーバは接続のリクエストを受け入れないから、「このサイトにアクセスできません」のエラーが発生します。※404ではありません。
最大同時実行数 サーバが同時に処理できるリクエストの数。
<よういスタートの場合>※展示会、説明会、セミナーなど
同時1回しかない操作 エラーなし操作できる人の可能数=最大同時接続数/2
連続に1秒1回ずつ操作 ※1秒以内の軽い処理、 エラーなし操作できる人の可能数=最大同時接続数/2/15
連続に1秒1回ずつ操作 ※重い処理、 エラーなし操作できる人の可能数=min( 最大同時実行数 , 最大同時接続数/2/15 )

システム概念図

以下のシステム概念図は、efwアプリ+tomcatで高負荷対応時各種設定情報の例です。 image.png

項目デフォルト説明
ListenBackLog Window32/64: 200
Solaris32/64,Linux32/64: 511
TCPコネクションが確立しているリクエストをキューイングする接続待ちキューの最大数 接続待ちキューの最大数の指定範囲 Window32/64: 1~200 Solaris32/64,Linux32/64: 1~2147483647
MaxClients256 応答することのできる同時リクエスト数
ServerLimit256 Apache プロセス稼働中における MaxClients に設定可能な上限値を設定すること、20000以下の制限がある
maxConnections NIO: 10000
NIO2: 10000
APR/Native: 8192
任意の時点でサーバーが受け入れて処理する接続の最大数。値を-1に設定すると、maxConnections機能は無効になり、接続数はカウントされない。
acceptCount100 可能なすべてのリクエスト処理スレッドが使用されているときに着信接続要求の最大キュー長。キューが満杯になったときに受信された要求は拒否される。
maxthreads200 このコネクタがリクエスト処理対して作成するスレツドの最大数(最大同時実行数)。Executor属性を指定しないConnector属性はスレッドプールを構成する。 そのスレッドプールが処理待ちキューから実際にリクエスト処理をするスレッドの最大数。

設定場所

image.png

image.png

システム概念図説明

クライアントから大量に接続される場合、

Connectionキューの接続要求をEFWフレームワークで処理する場合、

イベントキューの最大値到達エラーの場合2種類があります。

「該当機能は混雑しています。しばらくお待ちください。」

ListenBackLogキューオーバー

image.png

サーバの接続が満杯状態になっている時、新たに操作したら、左図のエラーメッセージが表示します。

イベントキューオーバー(リトライ可)

image.png

重い操作が制限になる時、左図のカウントダウンメッセージが表示します(30秒計)。リトライ可。

イベントキューオーバー(リトライ不可)

image.png

操作が制限になる時、左図の混雑メッセージが表示します。リトライ不可。