Java EEは、異なるマシンに配置されているオブジェクトや別プロセスのオブジェクト間でリクエストを呼び出す場合、ORBを介してIIOP通信できます。
ORBの設定について以下に説明します。
設定項目
ORB設定 | デフォルト値 | 意味 | 効果 |
---|---|---|---|
総接続数 | 1024 | IIOP通信の最大同時接続数を指定します。(注1)(注2) | 最大同時接続数を指定することによって、コネクション接続で使用するメモリやリソースを制御します。 |
最大メッセージ分割サイズ | 1024 | IIOPメッセージの最大フラグメントサイズを設定します。(注4)(注5)(注6)(注7) | IIOPメッセージのエンコード処理を最大フラグメントサイズで行います。全データをまとめてエンコードするのに比べて使用するJavaヒープ領域を圧縮できます。 |
ORB設定 | デフォルト値 | 意味 | 効果 |
---|---|---|---|
最大メッセージ分割サイズ | 4096 | IIOPメッセージの最大フラグメントサイズを設定します。(注4)(注5)(注6)(注7) | IIOPメッセージのエンコード処理を最大フラグメントサイズで行います。全データをまとめてエンコードするのに比べて使用するJavaヒープ領域を圧縮できます。 |
注1) 100未満の値を設定しても、接続数が100以上にならないと接続の回収は行われません。
注2) 確立済みの接続が存在する場合、その接続を使用して通信します。例えばあるプロセスがマルチスレッドでリクエストを呼び出した場合、呼出し先が単一プロセスならば接続は1つだけ使用されます。
注3) 接続数がこの値を超えるとアイドル状態の接続の回収(コネクション切断)が行われます。使用中の接続数が総接続数まで到達している状態で、新規接続を行おうとすると、新規接続のコネクション自身が回収されます。
注4) 最大メッセージ分割サイズはデータ送信時の設定であり、クライアントからのリクエスト送信時と、サーバーからのリプライ送信時に有効な機能になります。
例えば、エンコードされた通信データが70000Byteで、最大メッセージ分割サイズが30000Byteの場合、図のように分割して、IIOP通信が開始されます。
送信された通信データは、受信側の受信バッファに格納された後、先頭データから順に業務データにデコードされ、ユーザアプリケーションに渡されます。
注5) 1024Byteより小さな値は設定しないでください。最大メッセージ分割サイズが1024Byteより小さい場合、想定される最大クライアント多重度の2倍のスレッドが必要になります。このため、サーバー側で必要なスレッド数が見積もり数を超過してしまう可能性があります。
なお、スレッド数の見積もりについては、「5.8.1 スレッドプーリング」を参照してください。
注6) 256000以上の値を設定する場合、接続先の最大受信バッファサイズを本設定値より大きい値とする必要があります。最大受信バッファサイズについては、「5.14.2 通信データサイズに関する注意事項」を参照してください。
注7) 設定値は、Java VM上でのヒープ使用量に影響します。
最大メッセージ分割サイズにより、IIOP通信時に獲得するバッファ領域のサイズが変動しますので、最大メッセージ分割サイズを変更する際は、実際に送受信される業務データとは別に、最大メッセージ分割サイズの設定によるヒープ使用量を考慮して、Java VMのヒープ領域サイズを見積もってください。
以下の計算式のうち、大きいほうの結果が必要なヒープ使用量になります。
IJServerクラスタ起動時に必要なヒープ使用量
IJServerクラスタ起動時のヒープ使用量 = 最大メッセージ分割サイズ × 3
アプリケーション実行時に必要なヒープ使用量
クライアント側で必要なヒープ使用量 = (最大メッセージ分割サイズ + 最大受信バッファサイズ) × 最大同時リクエスト送信数 サーバー側で必要なヒープ使用量 = (最大メッセージ分割サイズ + 最大受信バッファサイズ) × 想定される最大クライアント同時接続数
最大同時リクエスト送信数:クライアントプロセスの同時実行スレッド数に相当します。
想定される最大クライアント同時接続数:デフォルトスレッドプールの最大プールサイズに相当します。
設定方法
Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更・参照できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
リファレンスマニュアル(コマンド編)の「configs.config.iiop-serviceの定義項目」のorb.max-connections(総接続数)
設定変更時は、IJServerクラスタを再起動する必要があります。
IJServerクラスタの場合
Interstage Java EE管理コンソールおよびasadminコマンドを使用して変更・参照できます。詳細については、以下のマニュアルを参照してください。
Interstage Java EE管理コンソールヘルプ
リファレンスマニュアル(コマンド編)「configs.config.iiop-serviceの定義項目」のorb.message-fragment-size(最大メッセージ分割サイズ)
設定変更時は、IJServerクラスタを再起動する必要があります。
アプリケーションクライアントコンテナに設定する場合
環境変数VMARGSに以下の値を設定します。
-Dcom.sun.corba.ee.giop.ORBFragmentSize=設定値
詳細については、以下のマニュアルを参照してください。
「Java EE運用ガイド」の「Java EEアプリケーションクライアントの環境設定」
スタンドアロンクライアントの場合
Java VMオプションに以下の値を設定します。
-Dcom.sun.corba.ee.giop.ORBFragmentSize=設定値