Java EEは、異なるマシンに配置されているオブジェクトや別プロセスのオブジェクト間でリクエストを呼び出す場合、ORBを介してIIOP通信できます。
ORBの設定について以下に説明します。
ORB設定 | 意味 | 効果 |
---|---|---|
総接続数 | IIOP通信の最大同時接続数を指定します。 (注1)(注2) | 最大同時接続数を指定することによって、コネクション接続で使用するメモリやリソースを制御します。 |
最大メッセージ分割サイズ | IIOPメッセージの最大フラグメントサイズを設定します。 (注4)(注5) | IIOPメッセージのエンコード処理を最大フラグメントサイズで行います。全データをまとめてエンコードするのに比べて使用するJavaヒープ領域を圧縮できます。 |
注1) 100未満の値を設定しても、接続数が100以上にならないと接続の回収は行われません。
注2) 確立済みの接続が存在する場合、その接続を使用して通信します。例えばあるプロセスがマルチスレッドでリクエストを呼び出した場合、呼出し先が単一プロセスならば接続は1つだけ使用されます。
注3) 接続数がこの値を超えるとアイドル状態の接続の回収(コネクション切断)が行われます。使用中の接続数が総接続数まで到達している状態で、新規接続を行おうとすると、新規接続のコネクション自身が回収されます。
注4) 1024byteより小さな値は設定しないでください。最大メッセージ分割サイズを1024byteより小さくした場合、サーバ側で必要なスレッド数が見積もり数を超過してしまう可能性があります。
注5) 設定値は、Java VM上でのヒープ使用量に影響します。
最大メッセージ分割サイズにより、IIOP通信時に獲得するバッファ領域のサイズが変動しますので、最大メッセージ分割サイズを変更する際は、実際に送受信される業務データとは別に、最大メッセージ分割サイズの設定によるヒープ使用量を考慮して、Java VMのヒープ領域サイズを見積もってださい。
以下の計算式のうち、大きいほうの結果が必要なヒープ使用量になります。
IJServerクラスタ起動時に必要なヒープ使用量
アプリケーション実行時に必要なヒープ使用量
IJServerクラスタ起動時に必要なヒープ使用量
IJServerクラスタ起動時のヒープ使用量=最大メッセージ分割サイズ×3
アプリケーション実行時に必要なヒープ使用量
アプリケーション実行時に必要なヒープ使用量=(最大メッセージ分割サイズ+最大受信バッファサイズ)×最大同時リクエスト送信数
サーバ側(リプライ送信を行うIJServerクラスタ)のヒープ使用量=(最大メッセージ分割サイズ+最大受信バッファサイズ)×想定される最大クライアント同時接続数
最大受信バッファサイズ:ORBMaximumReadByteBufferSize
受信バッファサイズ最大サイズ。
受信バッファサイズは、受信するデータサイズにより、初期値64000バイトから、2倍ずつ(64000→128000→256000)拡張します。
最大メッセージ分割サイズは、最大受信バッファサイズを越えないようににチューニングを行ってください。
最大受信バッファサイズは、JVMオプションで設定します。
IJServerのJVMオプションは、asadminコマンドのcreate-jvm-optionsサブコマンドを使用して設定します。
-Dcom.sun.corba.ee.transport.ORBMaximumReadByteBufferSize=値
設定変更時は、IJServerクラスタを再起動する必要があります。
項目名 | 省略値 | 範囲 |
---|---|---|
最大受信バッファサイズ | 256000 | 256000 ~ 2147483647 |
最大同時リクエスト送信数:クライアントプロセスの同時実行スレッド数に相当します。
想定される最大クライアント同時接続数:デフォルトスレッドプールの最大プールサイズに相当します。
ORBの設定は、Interstage Java EE管理コンソール、およびasadminコマンドを使用して変更・参照できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
getサブコマンド、setサブコマンドの「11.18.3.3 configs.config.iiop-serviceの定義項目」のorb.max-connections