Visual C++ サンプル
PerformancePersist サンプル : カスタム パフォーマンス モニタ データ

Download sample

IIS (Internet Information Server) の停止後に再起動したときにパフォーマンス情報のデータが失われることがないように、パフォーマンス情報を ATL Server Web アプリケーションから公開する方法を示します。

Security noteセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

必要条件

  • IIS

サンプルのビルドと実行

このサンプルをビルドして実行するには

  1. Visual Studio 開発環境で、ソリューション ファイル PerfPersist.sln を開きます。

  2. [ビルド] メニューの [ソリューションのビルド] をクリックします。

  3. PerfServ のビルド出力先のディレクトリで、コマンド ラインで次のコマンドを実行して PerfServ を登録します。

    PerfServ /Service
  4. コマンド ラインで次のコマンドを実行して PerfServ を開始します。

    net start PerfServ
  5. 手順 2. で作成した仮想ディレクトリで次のコマンドを実行して、アプリケーション DLL にパフォーマンス モニタ データを登録します。

    regsvr32 PerfPersist.dll

    このディレクトリは通常 C:\inetpub\wwwroot\PerfPersist\bin ですが、IIS ルートの位置が異なる場合は別のディレクトリになることがあります。

  6. [デバッグ] メニューの [デバッグなしで開始] をクリックします

  7. Windows パフォーマンス モニタを実行して、"Fibonacci Stats" オブジェクトのカウンタを追加します。これらは、サンプルの ATL Server アプリケーションによって提供されるカウンタです。

  8. 要求をいくつか出してみて、データが変化するのをパフォーマンス モニタで確認します。

  9. コマンド ラインで次のコマンドを実行して、アプリケーション DLL をアンロードします。

    iisreset

    データを提供するアプリケーションの実行が停止された後も、パフォーマンス モニタ データは失われません。PerfServ サービスは、共有メモリ内でこのデータの一貫性を保持します。元のページに移動することで ATL Server アプリケーションを再開すると、同一の共有メモリに再度アタッチされ、中断していた位置から続行されます。

パフォーマンス データを永続化する方法

ATL Server 要求ハンドラは各要求に対して作成され、必要に応じてその DLL が読み込まれます。ATL Server アプリケーションで、パフォーマンス モニタ サブシステムを使用してカスタム パフォーマンス データを提供するには、要求ハンドラの呼び出し間でデータを永続化させる必要があります。このサンプルでは、データを永続化させる 2 とおりの方法を示します。

  • カスタム パフォーマンス カウンタを管理する CPerfMon 派生オブジェクトのグローバル インスタンスの保持に COM オブジェクトを使用します。

    COM オブジェクトは、IIS によって永続的に読み込まれる ATL Server ISAPI DLL によって保持されます。要求ハンドラを起動すると、ISAPI 拡張機能からこのサービスを要求し、サービスから CPerfMon オブジェクトを取得します。または、このサービスを直接カスタム ISAPI DLL に追加することもできます。ただし、このサンプルで使用する方法はウィザードで生成された ISAPI DLL の変更を必要としないため、1 つの汎用 ISAPI DLL によって複数のアプリケーション DLL にサービスを提供する環境に適しています。

  • 外部サービス プロセスを使用してパフォーマンス データを保持します。

    サービス プロセスの実行可能ファイルは、IPerfCache インターフェイスを公開します。アプリケーション DLL は、このインターフェイスを使用して CPerfMon 派生オブジェクトを作成します。この方法を使用すると、なんらかの理由で IIS が中断または再起動され、ISAPI DLL によってデータが保持されなくなった場合でも、パフォーマンス データは失われません。

使用例

参照

タグ :


Page view tracker