付録H.11 短時間に大量の作業が生成されるシステムでの考慮事項
短時間に大量の作業が生成されるシステムでの考慮事項を説明します。
- 重要
-
この項の内容は,アプリケーション呼び出しサービスに関する性能要件がある場合に参照し,検討してください。特に,短時間に大量の作業が生成されるシステムで検討する必要がある内容を記載しています。
アプリケーション呼び出しサービスが短時間に生成される大量の作業を処理できるようにするためには,必要となる総スレッド数を計算し,それに応じてWorkManagerの最大スレッド数と総EAR数を決定する必要があります。
(1) 必要となる総スレッド数の計算
必要となる総スレッド数を求めるには,まず次の表の各項目の値を計算します。
ここでは例として,システムID内で1秒間に70件の作業が生成されるものとして,必要となる総スレッド数を計算する方法を示します。
|
項番 |
項目 |
値の例 |
|---|---|---|
|
1 |
システムID内で生成される作業数(1秒間の平均) |
70(単位:件/秒) |
|
2※ |
RESTアプリケーションのレスポンス(1作業の平均) |
0.6(単位:件/秒) |
|
3※ |
1作業の処理に掛かる処理時間から項番2を除いた時間(1作業の平均) |
0.1(単位:件/秒) |
項番1と項番2は業務要件から算出します。
項番3は製品処理でありDB性能などに依存しますが,通常は時間が掛からないため0.1秒と仮定します。
- 注※
-
アプリケーション呼び出しサービスは1件の作業を処理するごとに,アプリケーション呼び出しサービスのトレースファイルに次の内容を出力します。項番2と項番3は次のトレースファイルからも算出できます。
行番号 yyyy/mm/dd hh:mm:ss.sss tid message(LANG=ja) 1 2019/06/03 09:55:13.601 … 67D96C9E … mark KDIW63604-I The application call … … 2 2019/06/03 09:55:13.602 … 67D96C9E … call Client#method() 3 2019/06/03 09:55:13.635 … 67D96C9E … return Client#method() … 4 2019/06/03 09:55:13.636 … 67D96C9E … mark call-application success. …項番2は行番号「2」の時刻から行番号「3」の時刻の差分を取ることで算出できます。
項番3は行番号「1」の時刻から行番号「4」の時刻の差分を取ったものから,項番2を差し引くことで算出できます。
生成される作業を処理できるようにするため,必要となる総スレッド数は次の式で求めます。
必要となる総スレッド数=項番1×(項番2+項番3)
この式に表の項番1,項番2,項番3の値を当てはめると,必要となる総スレッド数は70×(0.6+0.1)=49となります。
(2) WorkManagerの最大スレッド数と総EAR数の決定
必要となる総スレッド数を基に,次の式を満たすように,WorkManagerの最大スレッド数とアプリケーション呼び出しサービスの総EAR数を決定します。
必要となる総スレッド数<=WorkManagerの最大スレッド数※1×総EAR数※2
- 注※1
-
「WorkManagerの最大スレッド数」は,J2EEサーバ用ユーザプロパティ(usrconf.properties)のejbserver.commonj.WorkManager.non_daemon_work_threadsの設定値を示します。
- 注※2
-
「総EAR数」はすべてのJ2EEサーバのアプリケーション呼び出しサービス(EAR)の合計数を示します。
「(1) 必要となる総スレッド数の計算」の例で求めた総スレッド数(49スレッド)の場合,WorkManagerの最大スレッド数と総EAR数は次の例のように求められます。
- (例1)
-
WorkManagerの最大スレッド数を50に設定し,総EAR数を1にします。
- (例2)
-
WorkManagerの最大スレッド数を10に設定し,総EAR数を5にします。総EAR数を2以上にするのが有効なケースについては,「付録H.10(1) 複数インポートするのが有効なケース」を参照してください。