0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2023-10-25

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
MaxClients 256 応答することのできる同時リクエスト数
ServerLimit 256 Apache プロセス稼働中における MaxClients に設定可能な上限値を設定すること、20000以下の制限がある
maxConnections NIO: 10000
NIO2: 10000
APR/Native: 8192
任意の時点でサーバーが受け入れて処理する接続の最大数。値を-1に設定すると、maxConnections機能は無効になり、接続数はカウントされない。
acceptCount 100 可能なすべてのリクエスト処理スレッドが使用されているときに着信接続要求の最大キュー長。キューが満杯になったときに受信された要求は拒否される。
maxthreads 200 このコネクタがリクエスト処理対して作成するスレツドの最大数(最大同時実行数)。Executor属性を指定しないConnector属性はスレッドプールを構成する。 そのスレッドプールが処理待ちキューから実際にリクエスト処理をするスレッドの最大数。

設定場所

image.png

image.png

システム概念図説明

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

  • まずApacheのListenBacklogキューに格納し、その中に1000接続をTomcatに渡します。
  • Tomcatは、接続要求を受け取り、 Connectionキューに格納します。
  • Connectionキューから100接続をAcceptキューに回して、処理します。
  • Connectionキューに空きの分を、後続の接続要求で補います。
  • Connectionキューの最大値を超えないようにするため、MaxClientsとmaxConnectionsの値を合わせます。

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

  • 重い処理に対して、イベントごとに同時処理可能キューを設定します。キューの最大値に到達したら、エラーを戻します。
  • 軽い処理に対して、同時処理可能キューを設定しません。

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

  • リトライ可能に設定する場合、エラーメッセージを表示し、30秒カウントダウンします。
  • リトライ不可に設定する場合、エラーメッセージを表示するだけです。
    「該当機能は混雑しています。しばらくお待ちください。」

ListenBackLogキューオーバー

image.png

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

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

image.png

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

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

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

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?