同時処理数は、1プロセスあたりの実行多重度です。IJServerで同時に処理できるクライアントのリクエスト数は、プロセス多重度と同時処理数で決まります。例えばプロセス多重度を2、同時処理数を16に設定すると、合計で2×16=32の処理が同時に処理できます。クライアントからのリクエストが、処理できるリクエスト数を超えた場合は、キューイングされます。
同時処理数を変更することで、1プロセスあたりの実行多重度を増やすことができますが、同時処理数が増えることによる使用資源(CPU使用率、メモリ量など)の増加により、効果が見られない場合があります。
資源が不足している場合には、後から実行されたリクエストをキューイングすることにより、レスポンスの安定を図ります。
■プロセスへの処理振り分け
EJBコンテナのプロセス多重度を2以上に設定した場合、各プロセスへのディスパッチ論理は以下のように行われます。
STATEFUL Session Beanの場合、createメソッドで取得したEJB objectへのアクセスは、必ず同一のプロセスにディスパッチされます(同一のプロセスにディスパッチされるため、前回の処理をセションの情報として保持し、次回のアクセス時に参照できます)。
1以外の場合には、EJB objectの総数が少ないプロセスに処理を振り分けます。
各プロセスのEJB objectが同数の場合には、ラウンドロビン方式(処理要求を順番に割り振る方式)でディスパッチするプロセスを決定します。
各EJBアプリケーション種別で、EJB objectが生成されるタイミングと削除されるタイミングを以下に記載します。
EJBコンテナは、各プロセスに生成されたEJB objectの総数を判断して、適切なプロセスに処理を割り振ります。
EJBアプリケーション種別 | EJB objectが生成されるタイミング | EJB objectが削除されるタイミング |
---|---|---|
STATEFUL Session Bean | createメソッド実行時 |
|
STATELESS Session Bean | IJServer起動時に1つ生成 | IJServer停止時 |
Entity Bean |
|
|
Message-driven Bean | - | - |
同時処理数には、以下のように最小値と最大値の設定ができます。
通常はデフォルト値で運用することを推奨します。
定義項目 | デフォルト値 | 説明 |
---|---|---|
最小値 | 16 | IJServer起動直後から、EJBコンテナで同時処理可能なスレッド数です。クライアントのリクエスト数が最小値を超えた場合は、自動的に拡張して動作します。 |
最大値 | 64 | 拡張可能な同時処理数の最大値です。クライアントのリクエスト数が最大値を超えた場合は、リクエストはキューイングされます。 |