Interstage Application Server OLTPサーバ運用ガイド
|
目次
索引
|
2.2.5.1 CORBAアプリケーション運用時のタイマ監視
CORBAサービスは、アプリケーションのハングアップなどを防ぐため、アプリケーションの稼働状況を監視するためのタイマ監視機能を備えています。クライアント/サーバアプリケーションの動作中に、設定されたタイムアウト時間に応じてタイムアウトを発生させ、アプリケーションに通知します。
タイムアウト時間の種類
CORBAサービスでは、以下のタイムアウト時間を設定することができます。
定義項目名 |
設定内容 |
period_receive_timeout |
クライアントにおける、リクエスト送信(サーバメソッド発行)から返信までの待機時間。
サーバメソッドからの返信がないままこの時間を経過すると、クライアントアプリケーションにタイムアウトが通知されます。 |
period_server_timeout |
サーバ(Persistentタイプ以外)における、サーバメソッド起動からCORBA_ORB_initメソッド(ORB初期化メソッド:C言語インタフェースのメソッド名)発行までの監視時間。
CORBA_ORB_initメソッドが発行されずにこの時間を経過すると、クライアントにNO_IMPLEMENT例外(サーバメソッド未実装を意味)が通知されます。 |
period_idle_con_timeout |
サーバにおける、無通信状態(クライアントからのリクエスト送信なし)の監視時間(リクエスト返信完了後のコネクション維持時間)。
この時間を超えてもクライアントからのリクエスト送信がない場合、クライアントとのコネクションを切断し、リクエスト処理に使用したメモリ資源を解放します。 |
period_client_idle_con_timeout |
クライアントにおける、無通信状態(サーバへのリクエスト送信なし)の監視時間(リクエストの復帰完了後のコネクション維持時間)。
この時間を超えてもサーバへのリクエスト送信がない場合、この時間を超えてもサーバへのリクエスト送信がない場合、サーバとのコネクションの切断を行います。次回リクエスト送信時に、コネクションの再接続を行います。なお、プロセスモードの場合は、時間超過のタイミングではコネクション切断は行わず、次回リクエスト送信時にサーバとのコネクションの切断・再接続を行います。 |
CORBAサービスのタイムアウト時間は、CORBAサービスの動作環境ファイル(config)で設定します。各パラメタの初期値などの詳細につきましては“チューニングガイド”の“config”を参照してください。
リクエスト送信(サーバメソッドの実行要求)から復帰までの処理の流れと、関連するタイムアウト時間について、以下に示します。
- クライアントアプリケーションからリクエストの発行
- リクエストの送信(コネクションの確立)
- サーバメソッドの起動(Persistentタイプ以外)
- CORBA_ORB_initメソッドの発行
- サーバメソッドの復帰
- コネクションの切断
タイムアウト時間の設定の目安
CORBAアプリケーション連携を行う場合は、以下に考慮してタイムアウト時間を設定する必要があります。
- period_receive_timeout(クライアントアプリケーション側)
- クライアントアプリケーション側でのリクエストの送信から返信までの待機時間として、クライアント・サーバ間の通信速度やサーバメソッドの処理時間を考慮して、period_receive_timeoutには、T1時間以上の値を設定する必要があります。
通常、サーバアプリケーション側のperiod_server_timeout以上の値を設定します。
- period_server_timeout(サーバアプリケーション側)
- サーバアプリケーションのサーバメソッドの起動からCORBA_ORB_initメソッドが発行されるまでの処理時間を考慮して、period_server_timeoutには、T2時間以上の値を設定する必要があります。
- period_idle_con_timeout(サーバアプリケーション側)
- サーバアプリケーション側のCORBAサービスは、全リクエストの返信完了からperiod_idle_con_timeout(T3)時間が経過すると、クライアントとのコネクションを切断します。
CORBAサービスでは、リクエスト処理のためのメモリ資源をクライアントごとに確保するため、コネクションが切断されるまでその資源は保持されます。
period_idle_con_timeout(サーバアプリケーション側)には、CORBAサービスが使用できるメモリ容量、クライアント数などを考慮して設定する必要があります。
- period_client_idle_con_timeout(クライアントアプリケーション側)
- クライアントアプリケーション側のCORBAサービスは、全リクエストの復帰完了からperiod_client_idle_con_timeout(T4)時間が経過すると、スレッドモードのアプリケーションではサーバとのコネクションを切断し、次回リクエスト送信時にコネクションを再接続します。プロセスモードのアプリケーションでは、時間経過のタイミングではサーバとのコネクションの切断を行いませんが、次回リクエスト送信時にコネクションを一旦切断し、再接続して、リクエストを送信します。
これは、サーバ側でのタイムアウト(period_idle_con_timeout(T3)時間経過など)によりサーバとのコネクションが切断された場合、クライアント側でコネクション切断を検出しないままリクエストを送信したことによる送信エラーを防ぐためのものです。
- クライアント・サーバのみの場合
- period_client_idle_con_timeout(T4)には、サーバアプリケーション側のperiod_idle_con_timeout(T3)以下の値を設定します。
- クライアント・サーバ間にファイヤウォールが介在する場合
- period_client_idle_con_timeout(T4)とperiod_idle_con_timeout(T3)は、ファイヤウォールのコネクション維持時間を考慮して設定する必要があります。
詳細は“ファイヤウォールとの連携”を参照してください。
タイムアウト時間(period_receive_timeout)の動的変更
period_receive_timeout(リクエスト送信から返信までの待機時間)は、クライアントアプリケーションで以下のメソッドを発行することにより動的に変更することができます。
- CORBA_ORB_set_client_timerメソッド(C言語インタフェースのメソッド名)
このメソッドで変更した時間は、クライアントアプリケーションのプロセス全体で有効になります。
- CORBA_ORB_set_client_request_timerメソッド(C言語インタフェースのメソッド名)
このメソッドで変更した時間は、クライアントアプリケーションのスレッド内で有効になります。
各開発言語のタイムアウト時間変更メソッドを以下に示します。詳細は“リファレンスマニュアル(API編)”を参照してください。
[開発言語] |
[メソッド名] |
C言語 |
CORBA_ORB_set_client_timer、CORBA_ORB_set_client_request_timer |
C++言語 |
CORBA::ORB::set_client_timer、CORBA::ORB::set_client_request_timer |
Java |
com.fujitsu.ObjectDirector.CORBA.ORB.set_client_timer、
com.fujitsu.ObjectDirector.CORBA.ORB.set_client_request_timer |
COBOL |
CORBA-ORB-SET-CLIENT-TIMER、CORBA-ORB-SET-CLIENT-REQUEST-TIMER |
OOCOBOL |
CORBA-ORB-SET_CLIENT_TIMER、CORBA-ORB-SET_CLIENT_REQUEST_TIMER |
All Rights Reserved, Copyright(C) 富士通株式会社 2007