Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 解説


5.3.2 アプリケーションプログラム障害の対策

UAPに障害が起こった場合,OpenTP1はUAP単位の回復処理(部分回復)をして,システム全体に影響がないようにします。UAPに障害が起こった場合の処置について説明します。

〈この項の構成〉

(1) システム定義が間違っている場合の処置

システム定義に適切でない値が設定されている場合は,OpenTP1はエラーメッセージを出力して該当するUAPを停止させます。この場合は,システム定義を修正してUAPを再び開始させてください。

メモリ容量が不足したことが原因でUAPを開始できない場合は,必要ないUAPのプロセスを停止させるか,または不要なファイルを削除してからOpenTP1を再開始させてください。

(2) プログラムがループした場合の処置

UAPが終了できなかったり,サービス要求の結果が戻ってこなかったりした場合に備えて,OpenTP1は次に示す時間を監視しています。

(3) UAPのリンケージの不良で異常終了する場合の処置

OSがHP-UXの場合,リンケージ時のバインドモードには必ず"immediate"を指定してください。UAPを"immediate"以外のバインドモードで作成した場合,UAPが異常終了する場合があります。作成したUAPのバインドモードが"immediate"かどうかは,OSのchatrコマンドで確認してください。

(4) 異常終了したUAPの部分回復処理の場合の処置

UAPが異常終了した場合,OpenTP1はUAPの部分回復処理をします。UAPの部分回復には,次のものがあります。

(a) UAPプロセスの再起動および閉塞処理

  • SPPが異常終了した場合

    サービスグループを閉塞するか,またはプロセスを再起動するかをユーザサービス定義に指定します。ただし,ユーザサービス定義の連続異常終了限界経過時間に指定した時間内に3回異常終了すると,OpenTP1はSPPを強制的に閉塞します。閉塞されたSPPにサービスを要求しても,エラーリターンします。

  • MHPが異常終了した場合

    アプリケーションまたはサービスを閉塞するか,またはプロセスを再起動するかをアプリケーション属性定義に指定します。MHPが閉塞された場合,そのMHPに対してメッセージ送信されると,ERREVT2のMCFイベントが通知されます。

  • SUPが異常終了した場合

    異常終了したときにプロセスを再起動するかどうかは,ユーザサービス定義のauto_restartオペランドの指定に従います。

(b) トランザクションの部分回復処理

異常終了したUAPがトランザクション処理中の場合は,トランザクション部分回復をします。

UAPで障害が起こった場合,トランザクション内のUAPプロセスが異常終了したことをOpenTP1が検知して,トランザクション回復サービスは該当するトランザクションを回復して,決着させます。このとき,トランザクションのプロセスの回復処理を並行させて,効率を上げることができます。並行させて回復するプロセスの数は,トランザクションサービス定義に指定しておきます。

回復依頼をスケジュールしているときにシステムが使用する領域が不足してトランザクションを回復できない場合があります。これを防ぐため,OpenTP1は一定間隔で回復していないトランザクションを検索して,再び回復する処理をします。

(5) UAPのデッドロックが起こった場合の処置

複数のUAPから同じ資源にアクセスすると,デッドロックが起こる場合があります。OpenTP1がデッドロックを検知すると,UAPのデッドロックプライオリティを比較して,優先度が低い方のUAPの関数をエラーリターンさせます。

デッドロック時のOpenTP1の処置については,「3.9.1(5) デッドロックの対処方法」を参照してください。