次の方法で共有


COM+追跡

COM+追跡サービスを使用すると、実行中のCOM+アプリケーションの状態とパフォーマンスを追跡する独自の管理プログラムと診断プログラムを作成できます。 COM+追跡は、COM+アプリケーションの使用に関する統計情報と、COM+サーバーアプリケーションインスタンスが一時停止しているか、リサイクルされているかなどの状態情報を提供します。 ツールは、診断監視または表示目的で追跡情報を使用できます。 たとえば、コンポーネントサービス管理ツールはCOM+追跡を使用して、 [COM+アプリケーション] フォルダーと [実行中のプロセス] フォルダーにCOM+アプリケーションインスタンスの状態を表示します。

COM+追跡は、一般的に使用される一連のメトリックを計算して定期的に更新し、必要なプログラムがこの情報を使用できるようにします。 どちらのサービスもCOM+アプリケーションインスタンスからデータを自動的に収集し、このデータをコンシューマーが使用できるようにするという点で、COM+インストルメンテーションに似ています。 ただし、これらのサービスには、提供される機能と一般的な使用方法の両方で、いくつかの重要な違いがあります。 次の表は、これらの違いをまとめたものです。

COM+インストルメンテーション COM+追跡
詳細なデータ。 COM+インストルメンテーションサービスは、COM+アプリケーションインスタンスで発生する個々の個別のイベント(たとえば、メソッドが呼び出され、オブジェクトが破棄されました。)を登録済みのサブスクライバーに通知します。
集計データ。 COM+追跡は、COM+アプリケーションインスタンスの状態とパフォーマンスの一般的に使用されるメトリックを計算し、定期的に更新します。
通常、イベントサブスクライバーは、アドホックアルゴリズムとポリシーを使用して、独自のメトリックを計算します。
メトリックは、COM+追跡サービスによって自動的に計算されます。 すべてのコンシューマーは同じデータを取得しますが、カスタムメトリックはサポートされません。
サブスクリプションを登録した後、イベントが発生するまで、コンシューマーはCOM+アプリケーションインスタンスに関する情報を受け取りません。
すべてのCOM+アプリケーションインスタンスの追跡データは、いつでも取得できます。
コンシューマーに対して、COM+イベントベースのサブスクリプションメカニズムのみをサポートします。
COM+イベントベースのサブスクリプションメカニズムと、COMローカルサーバーインターフェイスでのポーリングの両方をサポートします。
メソッドが呼び出されたとき、またはメソッドが返されたときの通知。
平均呼び出し応答時間、最近の期間に成功または失敗したメソッド呼び出しの数、メソッド呼び出しに現在含まれているオブジェクトの数。
オブジェクトがオブジェクトプールに追加または取得されたときの通知。
プール内のオブジェクトの数、オブジェクトの合計数。
COM+サーバーアプリケーションが開始、一時停止、またはリサイクルされたときの通知。
COM+サーバーアプリケーションプロセスの状態(たとえば、一時停止されているかリサイクルされているか)。
トランザクションの開始、準備、中止、およびコミットイベントの通知。
同等の対象なし。
成功および失敗したメソッド呼び出しレベルの認証試行の通知。
同等の対象なし。

COM+追跡は、メトリックを計算するためのデータスコープと柔軟性の点でより制限されていますが、提供されるメトリックは、さまざまな管理および診断プログラムに十分です。 可能な場合は、COM+追跡を使用すると、これらのプログラムの設計を簡略化できます。 さらに、実稼働システムでCOM+追跡を使用すると、パフォーマンスへの影響が大幅に低下する可能性があるため、リアルタイム監視ツールに適しています。

COM+追跡によるデータの収集方法

COM+サーバーアプリケーションのプロセスが開始すると、COM+はそのプロセスを、システムアプリケーションのコンポーネントであるトラッカーサーバーに登録します。 COM+ライブラリアプリケーションおよびコンポーネント (SWC) コンテキストを使用しないサービスのコンポーネントも追跡をサポートします。 プロセスでライブラリコンポーネントまたはSWCコンテキストが作成されると、COM+はそのプロセスをトラッカーサーバーに登録します (まだ登録されていない場合) 。

COM+は、オブジェクトの作成やメソッド呼び出しの完了など、プロセスで特定のイベントが発生したときに追跡対象プロセスの統計を更新します。 更新されたデータは定期的にトラッカーサーバーに送信され、その時点でコンシューマーが使用できるようになります。 トラッカーサーバーは、COM+アプリケーションのリサイクル機能とハング監視機能によって使用されるメトリックの一部を計算する役割も担います。 このデータはコンシューマーも使用できます。

追跡データは、データを生成したプロセスに従って編成されます。 プロセス内の個々のCOM+アプリケーションまたはコンポーネントのレベルのデータは、この情報を必要とするコンシューマーも使用できます。

イベントとポーリング

COM+追跡では、コンシューマーが追跡サーバーから追跡データを取得するための2つのメカニズム、COM+イベントベースのサブスクリプションメカニズム、およびCOMローカルサーバーインターフェイスがサポートされています。

追跡データの更新について定期的に通知を受ける必要のあるプログラムは、IComTrackingInfoEventsイベントインターフェイスのサブスクリプションに登録できます。 追跡サーバーは約3秒ごとに各サブスクライバーのIComTrackingInfoEvents::OnNewTrackingInfoメソッドを呼び出し、コレクションオブジェクトからの直近の追跡データを送信します。 このオブジェクトはIComTrackingInfoCollectionインターフェイスを実装し、サブスクライバーはこのコレクション内で関心のあるデータを見つけることができます。

さまざまな理由から、プログラムが追跡サーバーにデータをポーリングする方が理にかなっている場合があります。 たとえば、監視ツールの更新頻度は、ユーザーインターフェイスに状態を表示するプログラムの更新頻度よりもはるかに低い場合があります。 また、プログラムがシステムで使用できる追跡データのごく一部しか使用しない場合もあります(たとえば、ツールは1つのCOM+アプリケーションのインスタンスのパフォーマンスのみを監視できます。)。 サブスクリプションモデルでは、各通知ですべてのCOM+アプリケーションの追跡データが各サブスクライバーに送信され、必要なデータを見つけるのはサブスクライバーの役割です。 最後に、COM+イベントはベストエフォート型のイベント通知メカニズムです。 信頼性の高いメッセージ配信サービスは提供されず、追跡サーバーが通知の送信に失敗したことをサブスクライバーが検出する方法はありません。

追跡データの取得をより高度に制御する必要があるプログラムでは、追跡サーバーのIGetAppTrackerDataインターフェイスを使用できます。