パフォーマンス診断ツール

作成者: Mike Rousos

この記事では、ASP.NET Core アプリでパフォーマンスを診断するためのツールの一覧を表示します。

Visual Studio の診断ツール

パフォーマンスの問題について調査を開始する際は、Visual Studio に組み込まれているプロファイリング ツールと診断ツールを使用するのが最適です。 これらのツールは、Visual Studio 環境で使用する場合に、力を発揮し、役に立ちます。 このツールを使用すると、ASP.NET Core アプリの CPU 使用率、メモリ使用量、パフォーマンス イベントの分析を行うことができます。 組み込むことで、開発時のプロファイリングが簡単になります。

詳細については、Visual Studio ドキュメントで確認できます。

Application Insights

Application Insights は、アプリのパフォーマンス データを詳細にわたって提供します。 Application Insights では、応答率、エラー率、依存関係の応答時間などのデータを自動的に収集します。 Application Insights は、アプリに固有のカスタム イベントとメトリックのログ記録をサポートしています。

Azure Application Insights には、監視対象のアプリに関する分析情報を提供する方法が複数用意されています。

  • アプリケーション マップ – 分散アプリケーションのすべてのコンポーネントにおけるパフォーマンスのボトルネックや障害ホットスポットを特定するのに役立ちます。

  • Azure メトリックス エクスプローラーは、グラフのプロット、傾向の視覚的な関連付け、メトリックの値の急上昇と急落の調査が可能な Microsoft Azure portal のコンポーネントです。

  • Application Insights ポータルのパフォーマンス ブレード:

    • 監視対象アプリでのさまざまな操作のパフォーマンスを詳しく表示します。
    • 単一操作の詳細を表示して、長い継続時間に寄与するすべてのパーツや依存関係を確認できます。
    • ここからプロファイラーを呼び出して、オンデマンドでパフォーマンス トレースを収集できます。
  • Azure Application Insights Profiler を使用すると、.NET アプリの定期的またはオンデマンドのプロファイリングを実行できます。 Azure portal には、呼び出し履歴とホット パスでキャプチャされたパフォーマンス トレースが表示されます。 また、トレース ファイルは、より詳細な分析のために、PerfView を使用してダウンロードすることもできます。

Application Insights は、さまざまな環境で使用することができます。

  • Azure で動作するように最適化されています。
  • 運用、開発、ステージングで動作します。
  • Visual Studio またはその他のホスティング環境でローカルに動作します。

コード ベースの監視の詳細については、Application Insights for ASP.NET Core に関する記事を参照してください。 コードレス監視の詳細については、Azure App Service のパフォーマンスの監視に関する記事を参照してください。

PerfView

PerfView は、.NET チームによって作成されたパフォーマンス分析ツールで、.NET のパフォーマンスの問題の診断専用です。 PerfView を使用すると、CPU 使用率、メモリと GC の動作、パフォーマンス イベント、および実時間を分析できます。

PerfView の詳細については、ツールまたは GitHub で、ユーザーのガイドを確認できます。

Windows パフォーマンス ツールキット

Windows パフォーマンス ツールキット (WPT) は、Windows Performance Recorder (WPR) と Windows Performance Analyzer (WPA) の 2 つのコンポーネントで構成されます。 このツールを使用すると、Windows オペレーティング システムやアプリの詳細なパフォーマンス プロファイルが生成されます。 WPT には、データを視覚化する方法が多数ありますが、そのデータ収集機能は、PerfView の方が強力です。

PerfCollect

PerfView は .NET シナリオに役立つパフォーマンス分析ツールですが、Windows でのみ実行されるため、Linux 環境で実行されている ASP.NET Core アプリからのトレースの収集には使用できません。

PerfCollect は、PerfView による分析が可能な Linux のトレースを収集するための、ネイティブ Linux プロファイリング ツール (PerfLTTng) が使用されている Bash スクリプトです。 PerfCollect は、PerfView を直接使用できない Linux 環境で、パフォーマンスの問題が発生する場合に便利です。 代わりに、PerfCollect を使用すると、.NET Core アプリからトレースを収集した後、PerfView を使用して Windows コンピューター上で分析することができます。

PerfCollect をインストールする方法および作業を開始する方法の詳細については、GitHub で確認できます。

その他のサードパーティのパフォーマンス ツール

.NET Core アプリケーションのパフォーマンス調査に役立つサードパーティのパフォーマンス ツールの一覧を次に示します。