障害の管理

InterChange Server Express システムでの障害を管理する際は、トラブルシューティングのリソースを使用して問題を解決することになります。コネクターやコラボレーションなどのシステム・コンポーネント、または組み込みアプリケーションなどのサード・パーティーのコンポーネントでクリティカル・エラーが発生することがあり、このエラーが原因でイベントが失敗することがあります。

エラーが原因でイベントが失敗した場合に備えて、InterChange Server Express システムには、問題解決のための機能が組み込まれています。障害が起きたときに InterChange Server Express 内でコラボレーションを一時停止するようにシステムをセットアップすることができます。このセクションの内容は次のとおりです。

サービス呼び出しの障害リカバリー

InterChange Server Express のリカバリー・ストラテジー

クリティカル・エラー

アプリケーションとの接続の喪失

不明なコネクター・エージェント状況

データベース接続の失敗

フローの失敗

サービス呼び出しの障害リカバリー

宛先アプリケーションに重複してイベントが送信されないようにするには、障害が起きたときに転送中であったサービス呼び出しのすべてが自動的に再サブミットされないように、ユーザーがリカバリーを設定できます。サーバー障害の発生前に、非トランザクション・コラボレーションを構成して、障害とリカバリーが起きたときにサービス呼び出しイベントが転送中状態のまま持続されるようにすることができます。 InterChange Server Express がリカバリーする際、サービス呼び出しイベントは転送中の状態となります。このとき Flow Manager または Failed Event Manager を使用すると、失敗したイベントを個々に調べ、それを再サブミットするタイミング (または再サブミットするかどうか) を制御することができます。

失敗したサービス呼び出しを転送中の状態のまま持続するようにコラボレーションを構成するには、System Manager に移動し、「コラボレーションの一般プロパティー」ウィンドウで「転送中状態でサービスの呼び出しを持続」 チェック・ボックスを選択します。

注:
コラボレーションがコラボレーション・グループに含まれている場合、このプロパティーを設定すると、グループ内の他のすべてのコラボレーションにも同じプロパティー設定が暗黙的に適用されます。コラボレーション・グループに属する他のすべてのコラボレーションに同じプロパティーを設定しないのであれば、グループ内の 1 つのコラボレーションに「転送中状態でサービスの呼び出しを持続」を設定しないようにしてください。 トランザクション・コラボレーションの場合は、「転送中状態でサービスの呼び出しを持続」 チェック・ボックスをクリアして、このプロパティーを設定しないことを推奨します。

InterChange Server Express のリカバリー・ストラテジー

イベントの処理中に InterChange Server Express が障害を起こした場合は、その時点で WIP (Work-in-Progress) キューに入っていたすべてのイベントをリカバリーするか、サーバーのリブート時に別の方法でそれらのイベントを処理する必要があります。WIP イベントのリカバリーには多くのメモリーを必要とするため、サーバーのリブートに時間がかかり、場合によっては停止することがあります。InterChange Server Express 製品には、据え置きリカバリーと非同期リカバリーという 2 つの機能が用意されています。この機能により、サーバーがリブートするまでの時間が短縮され、すべてのイベントがリカバリーされる前に サーバーを他の作業に使用できます。

フロー制御、および WIP データの一部として格納されたビジネス・オブジェクト・キーは、据え置きリカバリーと非同期リカバリーの効率化に役立ちます。 いずれの機能でも、InterChange Server Express のリカバリー時に必要なメモリー量が削減されるので、InterChange Server Express のリカバリー時のリブート時間が大幅に短縮されます。

WIP データの一部としてビジネス・オブジェクト・キーを格納すると、リカバリー時にビジネス・オブジェクトを非直列化せずに ビジネス・オブジェクト・キーを取得できるため、MQ またはデータベースの往復が不要になります。 フロー制御は、システム全体またはコンポーネント・レベルのキュー項目数パラメーターを 構成し、InterChange Server Express のメモリー要求を制御できるサービスです。フロー制御の構成については、システム全体のフロー制御の構成手順を参照してください。

コラボレーション・イベントの据え置きリカバリー手順

据え置きリカバリーでは、コラボレーションの WIP イベントのリカバリーがサーバーのリブート後まで保留にされます。このため、これらのイベントに関連するメモリーの使用量が節約されます。

イベントは、サーバーがリブートした後に手動で再サブミットできます。以下の推奨事項に注意してください。

据え置きリカバリーは、コラボレーション・オブジェクトの RECOVERY_MODE プロパティーを設定することによって設定できます。

注:
据え置きリカバリーを使用すると、イベントの順序付けが損なわれます。これによりデータ保全性の問題につながることがあります。この機能は、順序付けが重要でない場合にのみ使用してください。

RECOVERY_MODE プロパティーには、以下の 2 つの設定があります。これらの設定では、サーバー障害時とリブート実行時に 下記のことが行われます。

デフォルトの設定は「常時」です。

注:
コラボレーションのリカバリー・モードの値を「据え置き」から 「常時」に変更しても、据え置きイベントはリカバリーされません。また、既存の据え置きイベントが作業状態に変わることもありません。据え置きリカバリー状態にあるイベントは、手動で再サブミットするまでは据え置き状態のままとなります。

コラボレーション・リカバリー・モードの値を設定するには、以下の手順を実行します。

  1. System Manager でコラボレーション・オブジェクトを右マウス・ボタンでクリックし、「プロパティー」をクリックします。「プロパティー」ダイアログ・ボックスが 表示されます (図 63 を参照)。
  2. コラボレーションの「プロパティー」ダイアログで「コラボレーションの一般プロパティー」タブをクリックします。以下のダイアログ・ボックスが開きます。
    図 63. 「プロパティー」ダイアログ・ボックス、「コラボレーションの一般プロパティー」タブ
  3. 「リカバリー・モード」リストで、以下のいずれかを選択します。

非同期リカバリー

InterChange Server Express は、コラボレーションとコネクターがリカバリーされるのを待たずにブート処理を完了します。コラボレーションとコネクターは、InterChange Server Express がブートした後に非同期にリカバリーすることができます。 これにより、コネクターとコラボレーションがリカバリーしているときに、System Monitor や Failed Event Manager、Flow Manager などのトラブルシューティング・ツールを使用できます。

クリティカル・エラー

InterChange Server Express システムでのクリティカル・エラーが原因で、実行時環境で問題が発生することがあります。InterChange Server Express システム内に定義されているクリティカル・エラーは、以下のいずれかの状況によって引き起こされることがあります。

デフォルトでは、コラボレーションはフローが失敗した後もそれ以降のイニシエーターの処理を続けます。しかし、フローの失敗の原因と考えられるクリティカル・エラーの発生時にコラボレーションが自動的に一時停止するようにその挙動を構成することができます。このようにコラボレーションを構成すると、フローの失敗後にイニシエーターが処理されなくなります。同じ理由で次のフローが失敗することがなくなります。イニシエーターの処理の順序を維持する必要がある場合、このことは重要です。コラボレーションが一時停止すると、イニシエーターがサーバーに到着する順序は維持されます。この時点で、クリティカル・エラーを修正し、失敗したフローを解決します。それから、コラボレーションを再始動することができます。 失敗したフローに関連するイニシエーターにコラボレーションが依存していない場合は、コラボレーションを再開し、失敗したフローを後から解決できます。 失敗したイベントのサブミットの詳細については、フローの失敗を参照してください。

クリティカル・エラーの発生後に一時停止するように コラボレーション・オブジェクトを構成するには、「プロパティー」ダイアログ・ボックスの 「コラボレーションの一般プロパティー」タブで「クリティカル・エラーの場合は一時停止」 チェック・ボックスを選択します。

この値が設定されていると、コラボレーションはクリティカル・エラーの発生時に一時停止します。そして、以下のいずれかが起こるまでその状態を持続します。

クリティカル・エラーの発生時に一時停止するようにコラボレーションを構成しないと、以下の状況が起こることがあります。

2 つのイニシエーター E1 と E2 がコラボレーションによる処理を待っているとします。E1 は新しい顧客を作成し、E2 は E1 を更新します。 E2 により E1 が更新されるので、E1 は E2 の前に処理する必要があります。コラボレーションが E1 を処理している時にクリティカル・エラーが発生すると、その結果として E1 が失敗し、E1 は再サブミット・キューに移動します。 「クリティカル・エラーの場合は一時停止」チェック・ボックスを選択しないと、コラボレーションは E2 の処理を試みます。E2 は E1 の正常な処理に依存するため失敗します。

コラボレーションのプロパティー CONVERT_UPDATE が true に設定されていると、E1 を更新する E2 は Create になり、更新されたデータによって新しい顧客を作成します。 この時点で E1 のデータは古いデータとなるので、E1 のデータを手動でサブミットしないでください。これを行うと、E2 によって渡されたデータが上書きされます。

アプリケーションとの接続の喪失

実行中のコラボレーションは、コネクターとアプリケーションとの接続が有効であると想定します。コネクターのアプリケーションが使用できなくなると、コネクターはイベントについてアプリケーションをポーリングしたり、コラボレーションの要求を満たすことができません。

アプリケーションが使用できない場合、イベントについてアプリケーションをポーリングするコネクターは、ポーリングを試みるたびにエラーを生成します。アプリケーションとの接続が失われているとコネクターが判断すると、コネクター・エージェントは終了し、コネクター・コントローラーに終了を要求する状況を戻します。

コネクターの動作中にそのアプリケーションが失敗したとき、コラボレーションがコネクターに要求を送信すると、その要求は失敗の状況とともにコラボレーションに戻されます。 これは、コネクターのプロパティー ControlStoreAndForwardModefalse が 設定されている場合にのみ発生します。コラボレーションは失敗し、17050、17058、17059、または 17060 うちのいずれかのメッセージが記録されます。これらのメッセージを受け取った場合は、アプリケーションの状況を検査してください。

不明なコネクター・エージェント状況

コネクター・エージェントはアプリケーション・イベントの開始点なので、コネクター・エージェントの状況は InterChange Server Express システムにとって重要です。コネクター・コントローラーはそのコネクター・エージェントの状況を保守し、この情報を System Manager に中継します。

コネクター・コントローラーは、15 秒間隔で応答要求をコネクター・エージェントに送信してコネクター・エージェントの状況を保守します。

3 回連続する検査にコネクター・エージェントが応答しない場合は、状況は不明であると想定されます。コネクター・エージェントの状況が不明と想定された場合、コネクター・エージェントに障害があることを意味します。また、コネクター・エージェントがネットワークを通じてインストールされている場合には、ネットワーク接続に障害があることを意味します。

コネクターの ControllerStoreAndForwardMode プロパティーを true に設定すると、コネクター・コントローラーは、コネクター・エージェントが始動してから、保留中のイベントを引き渡します。 このプロパティーに false を設定すると、コネクター・コントローラーは、コラボレーション要求に失敗します。失敗したコラボレーション要求は再サブミット・キューに送られます。Flow Manager を使用してこのコラボレーション要求を再サブミットできます。詳しくは、フローの失敗を参照してください。

注:
ControllerStoreAndForwardMode プロパティーが true に設定されている場合、状況が不明であるエージェントに依存しているコラボレーションは停止することがあります。 コラボレーションは、コネクター・エージェントが再始動してコラボレーション要求に応答するまで、応答を停止します。

関連するコラボレーションの「クリティカル・エラーの場合は一時停止」チェック・ボックスが選択されていると、そのコネクターにバインドされているコラボレーションは、コネクター・エージェントの不明状況を受け取ると一時停止します。エラー・メッセージが記録され、e-Mail Connector が構成されている場合には E メールが送信されます。

データベース接続の失敗

InterChange Server Express がサービスの処理にデータベース接続を必要とするときに、接続の最大数がすでに使用されていると、サーバーはアイドル状態の接続の解放を試みます。サーバーがアイドル状態の接続を解放できないと、接続の試みが失敗し、InterChange Server Express は、エラー 5010「使用可能な接続がキャッシュ内にありません。接続の最大数 max-connections-value に到達しました。」をログに記録します。

MAX_CONNECTIONS パラメーターを設定して InterChange Server Express 接続の数を制約した場合、エラー 5010 メッセージをモニターする必要があります。なぜなら接続の失敗は望ましくない結果につながることがあるためです。例えば、InterChange Server Express はイベント管理サービス用の接続を取得できないと、実行を停止します。デフォルトでは、この制約による接続数の上限は設定されません。

接続の失敗は、割り振られた接続の最大数が実行時の作業負荷を満たすのに十分でないことを意味します。現行データベースにおいて InterChange Server Express にそれ以上の接続を割り振ることができない場合は、複数のデータベースに作業負荷を分割することを考えてください。

フローの失敗

場合によっては、InterChange Server Express システムまたは関連するアプリケーションが失敗することがあります。InterChange Server Express システムを通じてデータを伝えるフローを正常に処理することは重要です。そのため、実行時環境においてデータの整合性を維持することが重要となります。システム・エラー、データ・エラー、およびクリティカル・エラーなどのシステム障害が原因で、フローを処理できないことがあります。 InterChange Server Express システムには、システム障害を処理するための機能が組み込まれています。

システム構成のエラー、オブジェクト定義のエラー、アプリケーション固有のエラー、またはデータ整合性のエラーが発生すると、InterChange Server Express システムがフローを処理するときに、フローが失敗することがあります。ビジネス・オブジェクトのマッピングの失敗など、InterChange Server Express コンポーネントが正しく機能しない場合があります。またコネクターが使用できない場合もあります。この場合システム・エラーが発生し、これによってフローが失敗することがあります。また、コラボレーションの実行時におけるアプリケーション・データの分離違反など、データの矛盾があるとデータ・エラーが発生し、これによってもフローは失敗します。

コネクター・コントローラーまたはコラボレーションがフローを処理している時にエラーが発生すると、そのフローは失敗します。そしてそのフローはイベント再サブミット・キューに移されます。この時点で、ユーザーは以下の選択肢があります。

失敗したフローの解決方法については、失敗したイベントの処理を参照してください。

失敗したトランザクション・コラボレーションの概要

システム・エラーとデータ・エラーが原因でトランザクション・コラボレーションが失敗することがあります。システム・エラーとデータ・エラーのいずれかが起こると、コラボレーションはロールバックを試みます。コラボレーションの差し戻しステップのロールバックが失敗すると、コラボレーションは「未確定」状態になります。実行時リカバリー中にエラーが発生すると、コラボレーションは、失敗したトランザクション・コラボレーションのリストに入れられます。このリストは対応するコラボレーションによって保持されます。失敗したトランザクション・コラボレーション とは、差し戻しステップでロールバックに失敗したコラボレーションです。

トランザクション・コラボレーションが失敗した場合には、これを解決する必要があります。失敗したトランザクション・コラボレーションは、Flow Manager を使用して処理できます。失敗したトランザクション・コラボレーションの解決方法については、失敗したイベントの処理を参照してください。

失敗したトランザクション・コラボレーションの一時停止の回避手順

失敗したトランザクション・コラボレーションは、デフォルトの動作では一時停止します。 失敗したトランザクション・コラボレーションが一時停止しないようにするには、プロパティー PAUSE_ON_COMPENSATION_FAILURE をコラボレーション・テンプレートに追加し、設定を TRUE (デフォルト) から FALSE に変更します。

新しいプロパティーを追加し、設定を FALSE に変更するには、以下の手順を実行します。

  1. System Manager で、失敗したコラボレーション・テンプレートをダブルクリックします。Process Designer Express が開きます。
  2. 「Site Wrapper」の下にある「定義」アイコンをダブルクリックします。右側のフレームに「テンプレート定義」ウィンドウが表示されます。
  3. 「プロパティー」タブをクリックします。
  4. 「追加」をクリックします。「名前」ダイアログ・ボックスが表示されます。
  5. 「名前」フィールドに PAUSE_ON_COMPENSATION_FAILURE と入力し、「OK」をクリックします。PAUSE_ON_COMPENSATION_FAILURE プロパティーは、左側のペインにある「一般プロパティー」ノードの下に表示されます。
  6. PAUSE_ON_COMPENSATION_FAILURE が左側のペインで選択された状態で、「プロパティー・タイプ」リストから「Boolean」を選択します。
  7. 「値」の下で、「True」行の 「IsDefaultVal」チェック・ボックスをクリアし、「False」行の「IsDefaultVal」チェック・ボックスを選択します。
  8. 「適用」をクリックします。
  9. Process Designer Express を閉じます。

Copyright IBM Corp. 2004, 2005