多くの場合、実行時の問題のデバッグには多面的なアプローチが必要です。 問題やソフトウェアのバグの原因を特定するには、ソフトウェア トレース、パフォーマンス カウンター、イベント ログ エントリ、Windows Management Instrumentation (WMI) イベント、デバッグ ソース コードなどの複数のソースからデータを収集する必要があります。
受信アダプターと送信アダプターは BizTalk サービスのアドレス空間で実行されるため、アダプターをデバッグするには、デバッガーを BtsNtSvc.exe プロセスにアタッチする必要があります。 ただし、分離受信アダプターの場合は、アダプターをホストするプロセスにデバッガーをアタッチする必要があります。
トラブルシューティングのためにランタイム診断をキャプチャするには、アダプターのランタイム コードをトレース コードでインストルメント化する必要があります。 これを行うには、Microsoft Enterprise Instrumentation Framework (EIF) を使用します。 通常は、エラー状態のみのトレース、エラーと警告のトレース、最後にエラー、警告、情報ステートメントのトレースなど、さまざまなレベルの重大度のトレース ステートメントを追加すると便利です。 さらに、より複雑なアダプターは、互いに分離してトレースする必要がある個別のサブシステムを持つことができます。 たとえば、アダプターには、ネットワーク サブシステムとコア サブシステムがあります。すべてのサブシステムのトレースを有効にすると、一部のシナリオで過剰な量の "ノイズ" が発生する可能性があります。
パフォーマンス カウンターは、アダプターの実行時の動作に関する詳細を提供するために、実行時にレートと値をキャプチャするために追加する必要があります。 たとえば、アダプターは、エンドポイントごとに送信されたメッセージの生数と、1 秒あたりの送信メッセージ数のパフォーマンス カウンターを発行する場合があります。
WMI イベントは、いくつかの重大なエラー シナリオにも役立ちます。 たとえば、アダプターが重大なエラーにヒットして受信場所をシャットダウンした場合、WMI イベントを発生すると、管理者はそのイベントをリッスンし、適切なアクションを実行できます。
アダプターのテスト
BizTalk Server 用のカスタム アダプターを開発するときは、エンタープライズ ソフトウェア品質に合わせて開発する必要があることを覚えておいてください。 つまり、発送前にアダプターを十分にテストする必要があります。 アダプターのテスト方法については詳しく説明しませんが、このセクションでは、何を行う必要があるかを示します。 一般に、アダプターなどのランタイム コードのテストでは、機能テスト、ストレス テスト、パフォーマンス テストの 3 つの大まかなカテゴリをカバーする必要があります。
関数テスト
アダプターは、正のテストと否定テストの両方を含め、その機能のすべての順列についてテストする必要があります。 肯定的なテストには、次のシナリオを含める必要がありますが、これらに限定されません。
メッセージを受信する
メッセージを送信する
動的ポートを使用してメッセージを送信する
受信場所を無効にする
構成を更新する
受信アダプターと送信アダプターの両方でサービス ウィンドウが動作していることを確認する
トランザクションアダプターの整合性を確保する
負のテストには以下を含める必要がありますが、これらに限定されません。
不適切なメッセージを受信する
良いメッセージと悪いメッセージのバッチを混在して受信する
送信エラー
再試行成功
再試行が失敗し、その後、次の輸送に移動することに成功しました。
次のトランスポートへの移動が失敗したため、メッセージを保留する
メッセージの混合バッチを送信する
データベース フェールオーバー
ストレス テスト
アダプターはランタイム コンポーネントであり、ランタイム ソフトウェアの厳格な要件を満たしている必要があります。 通常、ストレス テストは、負荷の下で一定期間シナリオを実行することによって実行されます。 さらに、高応力および低応力の平均故障間隔試験を実施する必要があります。それにより、アダプターは、測定された期間、負荷の下で実行されます。
これらのテストの大まかなガイドラインとして、アダプターを約 72 時間高負荷で実行する場合があります。アダプターを介したメッセージの数によって CPU 使用率が約 80 ~ 90% になる場合があります。 負荷が低い場合、CPU 使用率は約 30 ~ 40% (約 120 時間) になります。
パフォーマンス テスト
アダプターは、パフォーマンスを考慮して開発する必要があります。 アダプターを解放する前に、そのパフォーマンスを検証する必要があります。 パフォーマンスのスケールアップとスケールアウトを確実に行うことが重要です。つまり、CPU を追加すると、コンピューターの追加と同様にパフォーマンスが向上します。 コードのプロファイリングは、パフォーマンスのボトルネックを排除するのに役立ちます。