※本記事は Azure App Service ブログ General availability of Diagnostics tools for App Service on Linux Node.js appsの日本語抄訳版です。
Node.js アプリケーション向けの Linux 用 Azure App Service の診断ツールが公開されました。この機能によりアプリケーションコードの問題をデバッグするのに役立つ、詳細な診断アーティファクトを収集するためのビルトインサポートが提供されます。
これには、メモリダンプやプロファイラトレースが含まれ、開発者が Linux の Node.js コードについて様々なシナリオを診断するのに役立ちます。
具体的なシナリオとしては、以下のようなものがあります:
- メモリ使用率が高い
- CPU 使用率が高い
この機能は V8 sample-based profilerを使用し、診断トレースやスナップショットを収集することで、アプリケーションコードが問題の原因となっているかを特定します。
「問題の診断と解決」を利用した取得方法
問題の診断と解決 ブレードから Diagnostic Tools に移動します。
Collect Node.js Heap Dump もしくは Collect Node.js CPU Profiler を選択します。
こちらの機能は AlwaysOn 設定が TRUE に設定されている、かつ SKU が Standard、Premium、もしくは Isolated の場合でのみご利用いただけます。

Kudu を用いた取得方法
Linux app service 用の Kudu コンソール がアップデートされ、Process Explorer ページにメモリダンプとプロファイル用の新しいログ収集オプションが追加されました。
この新しいKuduの機能を使用するには、以下にアクセスしてください。
https://<app 名>.scm.azurewebsites.net/newui
Process Explorer を選択すると、デバッグしたいプロセスを特定できます。

ドロップダウンメニューからメモリダンプの種類を選択し、Collect Dump をクリックします。または、ドロップダウンからプロファイルの期間を選択し、Start Profilling をクリックします。

ヒープスナップショットを分析してメモリの問題を調査する
ヒープダンプは「*.heapsnapshot」という拡張子で作成されます。
ダンプが作成されると、ローカルマシンにダウンロードするためのリンクが提供されます。ダンプは、任意の Chromium ブラウザーを使用して分析することができます。
Chrome と Edge は同じ Javascript ランタイム (V8 エンジン) を使用しているため、ヒープスナップショットは Chrome または Edge DevTools for Node を使用して読み取ることができます。
Chrome を使用する場合:ブラウザで chrome://inspect/ と入力し、Open dedicated DevTools for Node をクリックします。

Edge を使用する場合:ブラウザで edge://inspect/ と入力し、同様に Open dedicated DevTools for Node をクリックします。
「Memory」タブを選択し、ここでヒープスナップショットを読み込んで分析します。
重要なのは「Shallow Size」と「Retained Size」の二つの列です。
Shallow Size : オブジェクト自体が保持しているメモリのサイズです。通常、配列や文字列だけが顕著な Shallow Size を持ちます。
Retained Size : オブジェクトが GC(ガベージコレクション)のルートから到達不能になり削除されることで解放されるメモリのサイズです。オブジェクトによって暗黙的に保持されます。
Retained Size の最も高い割合を探し、Shallow Size とも比較します。これにより、メモリリークや無駄なメモリ使用を特定できます。
Chromium ブラウザーで heapsnapshot ダンプを分析する方法の詳細については、Chrome - Devtools - Heapsnapshot - Reference をご参照ください。
CPU プロファイルを分析して CPU 高使用率を調査する
CPUプロファイラートレースは「*.cpuprofile」という拡張子で作成されます。
トレースが作成されると、ローカルマシンにダウンロードするためのリンクが提供されます。
トレースは、任意の Chromium ブラウザーを使用して分析できます。
Chrome を使用する場合: Chrome ブラウザーで chrome://inspect と入力し、Open dedicated DevTools for Node をクリックします。
Edge を使用する場合:Edgeブラウザーで edge://inspect と入力し、Open dedicated DevTools for Node をクリックします。
DevTools 内で「Performance」タブを選択します。
ここにトレースファイルをドラッグアンドドロップします。
「Call Tree」や「Bottom-Up」などのビューも使用することができます。
これらのビューを使って、プロファイラートレース内のフレームをより詳細に調べることができます。フレームを拡大して、さらに詳細な情報を得ることも可能です。
おわりに
Azure App Serviceでは、診断機能の充実と向上に努めており、本番環境のアプリケーションの健全性を詳細に分析し、トラブルシューティングするための幅広いツールを提供しています。
2024 年 02 月 09 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。