Azure App Service 用 Application Insights Profiler の一般提供を開始

執筆者: Catherine Wang (Program Manager | Visual Studio)

このポストは、5 月 11 日に投稿された Announcing Application Insights Profiler for Azure App Service now generally available の翻訳です。

 

このたび、Azure App Service 用 Application Insights Profiler の一般提供を開始いたします。同時に、Virtual Machines、Scale Sets、Cloud Services、Service Fabric などのコンピューティング リソース用 Profiler のパブリック プレビューもリリースいたします。これは、運用環境のアプリケーションの応答が遅延した際に、コード レベルのトレースを自動的に収集し表示する機能です。

概要

パフォーマンス問題を診断するのは、特にアプリがクラウド環境で運用されている場合、簡単ではありません。アプリの使用中に応答が遅くなった場合、要求を処理する途中のインフラストラクチャ、フレームワーク、アプリケーション コードのどこかに原因があると考えられます。クラウドでは常にマシンの追加や削除、ユーザー入力などが行われ、さまざまな条件が大規模に変動しています。

Application Insights Profiler は、上記のような問題を解決するのに役立ちます。変動する状況の中で、アプリケーションのパフォーマンス トレースを取得して表示します。ユーザーへの影響もなく、自動で広範囲に実行されます。Application Insights Profiler では、Azure 上のアプリのパフォーマンス問題を簡単に判断できるように、以下のような情報を取得します。

  • ユーザーから発行された各 Web 要求の応答時間の中央値、最大値、最小値
  • 特定の Web 要求の処理時間が長くなる「原因」となったコード パス

この Profiler は、既に広く使用されている PerfView と呼ばれるパフォーマンス問題診断ツールを基盤としています。PerfView アルゴリズムを大規模で実行できるよう最適化しており、オーバーヘッド抑えたサンプルを 1 時間ごとに短く取得します。できるだけ早い段階でパフォーマンスの問題を特定できるように、すべての Azure アプリケーションでこの機能を使用することをお勧めします。マイクロソフトは、Profiler での早期問題発見により、広範囲のユーザーへの影響を防止し、Azure アプリケーションのパフォーマンス問題をすべて解消することを目指しています。

Profiler を有効化する

次の手順に従い、App Services で Application Insights Profiler を有効化します。

Application Insights を使用して Azure Web アプリのプロファイリングを行う

コンピューティング リソースで Application Insights Profiler (プレビュー) を有効化する場合は、以下を参照してください。

他の Azure コンピューティング サービスで Profiler を有効化する (英語)

結果を表示する

ここからは、アプリケーションでパフォーマンス問題を特定する方法を簡単に説明します。オンラインで音楽アルバムを購入できる Music ストア Web アプリケーションがあるとします。このアプリを Azure にデプロイして、Application Insights Profiler を有効化します。Profiler は、アプリケーションが正常なパフォーマンスで稼動しているかどうかを常時監視します。

パフォーマンス問題の発見

まず、Music ストア Web アプリで使用される Application Insights のリソースにアクセスします。[Performance] ブレードを開くと、パフォーマンスの統計概要が表示されます。

上のセクションには、パフォーマンスのスパイクが発生した時間が視覚的に表示されます。

下のセクションには、処理や要求のパスが表示され、最も頻繁に呼び出された処理やその中央値 (一般的な値) と応答時間の 95 パーセンタイル値 (長時間を要した場合) をすばやく把握できます。

Examples

応答時間の 95 パーセンタイル値を並べ替えると、最も応答が遅かった呼び出しがわかります。ここでは、ShoppingCart 関連の要求が大幅に遅れていることがわかります。ShoppingCart は、ユーザーが精算と支払いを行う処理です。このような重要な機能では、常に高い応答性と信頼性を確保する必要があります。次に、何が起こっているのか詳しく確認します。

問題の根本原因の特定

POST ShoppingCart/RemoveFromCart メソッドの [Examples] 列のアイコンをクリックすると、大幅に遅延した際の応答時間を含む、プロファイルの詳細なトレース ブレードが表示されます (下図参照)。

LockContention

95 パーセンタイル値の Example カートのサンプルを選択します。トレース ビューで [Show Hot Path] をクリックすると、最も長くかかったコール スタックのツリーが自動的に展開されます。この情報は、パフォーマンス改善の対応などによく使用されます。

このサンプルでは、Music ストア アプリでカートから削除する処理中にロック競合が発生しています。Profiler はこれをすばやく特定し、ロック競合を解消するガイドを提示します。Profiler はこれ以外にも、低速なアルゴリズムまたは関数、外部呼び出しによるブロック時間、キャッシュが必要なデータの呼び出しなど、さまざまな原因の特定に役立ちます。

料金と制限事項

Application Insights では、追加料金なしでプロファイル データを 5 日間保持することができます。

  • 取得できるデータ量は最大 10 GB/日です。
  • このサービスは、App Services の Basic または上位のサービス レベルでホストされている Web アプリで使用できます。

まとめ

Application Insights Profiler の一般提供開始により、運用環境のアプリケーションで発生するパフォーマンス問題を簡単に診断し、修正できるようになります。

このサービスをぜひお試しいただき、ご意見やご感想をメール (serviceprofilerhelp@microsoft.com) またはこの記事下部のコメント欄までお寄せください。