付録B.5 チューニング項目の設計手順の詳細
アプリケーション呼び出しサービスのチューニング項目の設計例を示します。
- 〈この項の構成〉
(1) 必要なスレッド総数の計算
発生する作業を単位時間内に処理するために必要な,アプリケーション呼び出しのスレッド総数を計算します。
アプリケーション呼び出しに必要なスレッド総数を求める計算式を次に示します。
必要なスレッド総数=A×B×(C+D)
変数の説明
-
A:単位時間当たりの案件の投入数
-
B:1案件がシンクに達するまでに作成される呼び出し対象の作業数の平均値
-
C:RESTアプリケーションの平均応答時間
-
D:CSCIWの平均処理時間
この例では各値に「表B‒1 この例で想定するシステム要件」の値を想定しているため,アプリケーション呼び出しに必要なスレッド総数を求める計算式に,次のとおり値を代入します。その結果,この例での必要なスレッド総数は,小数点以下を切り上げた「70」になります。
A×B×(C+D) =13.888×10×(0.4+0.1) =69.444.. =70
(2) J2EEアプリケーション数とWorkManagerの最大スレッド数の検討
アプリケーション呼び出しサービスのJ2EEアプリケーション数とWorkManagerの最大スレッド数を検討します。
次の計算式を満たすよう,アプリケーション呼び出しサービスのJ2EEアプリケーション数とWorkManagerの最大スレッド数を決定します。
<必要なスレッド総数>≦<J2EEアプリケーション数>×<WorkManagerの最大スレッド数>
この例では,「付録B.5 チューニング項目の設計手順の詳細」の「(1) 必要なスレッド総数の計算」で求めた70以上を必要なスレッド総数と想定して,J2EEアプリケーション数とWorkManagerの最大スレッド数の組み合わせを検討します。
必要なスレッド総数が70以上の場合の,J2EEアプリケーション数とWorkManagerの最大スレッド数の組み合わせの例を次に示します。
-
J2EEアプリケーション数:8
-
WorkManagerの最大スレッド数:10(デフォルト値)
(3) アプリケーション呼び出しグループに関する検討
WorkManagerのスレッドの利用効率を上げるため,アプリケーション呼び出しサービスのJ2EEアプリケーション数に応じて,アプリケーション呼び出しグループの数を検討します。
アプリケーション呼び出しグループの数の目安は,次に示す計算式で求められます。
<アプリケーション呼び出しグループの数>=<アプリケーション呼び出しサービスのJ2EEアプリケーション数>×E
- 変数の説明
-
E:1.0~2.0
- ヒント
-
アプリケーション呼び出しグループの数は,アプリケーション呼び出しサービスのJ2EEアプリケーション数以上作成する必要があります。アプリケーション呼び出しグループの数が不足していると,アプリケーション呼び出しサービスごとに処理が分散されないことから,スループットが向上しないことがあります。
また,アプリケーション呼び出しグループの数が多過ぎても効果は上がりません。アプリケーション呼び出しグループの数は,多くても,アプリケーション呼び出しサービスのJ2EEアプリケーション数の2倍程度までが適切です。
上記から決定したアプリケーション呼び出しグループの数に沿うように,「付録B.2 チューニング項目と効果」の「(3) アプリケーション呼び出しグループを登録する」で示した指針に従って,グループ定義を検討します。
「表B‒1 この例で想定するシステム要件」で示したとおり,この例では,ref識別子の数を200と想定しています。ref識別子の数が200の場合の,アプリケーション呼び出しグループの構成例を示します。
-
ref識別子の数:200(システム要件)
-
アプリケーション呼び出しグループの数:8
-
1グループ当たりのref識別子数:25
なお,アプリケーション呼び出し制御情報に登録したグループの実行間隔当たりの作業発生数が,WorkManagerの最大スレッド数よりも少ない場合,WorkManagerに空きスレッドが発生するおそれがあります。その場合,スループットが十分に向上しないことがあります。
(4) 追加でチューニングが必要となる項目の値の検討
アプリケーション呼び出しサービスのJ2EEアプリケーション数とWorkManagerの最大スレッド数のほかに,必要な項目をチューニングします。
アプリケーション呼び出しサービスのJ2EEアプリケーション数とWorkManagerの最大スレッド数を決めたあとに,値の変更が必要な項目と,各値を求める計算式を次の表に示します。
項番 |
チューニング対象の項目 |
計算式 |
計算結果の例※1 |
---|---|---|---|
1 |
データベースコネクション数 |
<アプリケーション呼び出しサービスのJ2EEアプリケーション数>×<WorkManagerの最大スレッド数> |
80 |
2 |
TimerServiceでのタイムアウトメソッドをコールバックする最大スレッド数※2 |
<アプリケーション呼び出しサービスのJ2EEアプリケーション数> |
8 |
- 注※1
-
アプリケーション呼び出しサービスのJ2EEアプリケーション数を8,およびWorkManagerの最大スレッド数を10と想定した場合の計算結果です。
- 注※2
-
TimerServiceでのタイムアウトメソッドをコールバックする最大スレッド数は,J2EEサーバのユーザプロパティファイル(usrconf.properties)の次のプロパティに設定します。
ejbserver.ejb.timerservice.maxCallbackThreads=<1~100の整数>
詳細については,マニュアルCosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)の「J2EEサーバ用ユーザプロパティを設定するパラメタ」を参照してください。