Azure Spring Apps でヒープ ダンプとスレッド ダンプを手動でキャプチャして Java Flight Recorder を使用する
Note
Basic、Standard、Enterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise
この記事では、ヒープ ダンプまたはスレッド ダンプを手動で生成する方法と、Java Flight Recorder (JFR) を開始する方法について説明します。
運用環境の問題を修正し、ビジネスの稼動を継続できるようにするには、効果的なトラブルシューティングが不可欠です。 Azure Spring Apps には、アプリケーション ログのストリーミングとクエリ、豊富なメトリックの生成、アラート、分散トレースなどの機能が用意されています。 しかし、待ち時間の長い要求、JVM ヒープ リーク、または高い CPU 使用率について知らせるアラートが発生したときに、それらを末端で解決するソリューションはありません。 そのため、ヒープ ダンプの生成、スレッド ダンプの生成、JFR の開始を手動で行えるようにしました。
前提条件
- デプロイされた Azure Spring Apps サービス インスタンス。 作業を開始するには、「クイック スタート: 初めてのアプリケーションを Azure Spring Apps にデプロイする」を参照してください。
- サービス インスタンスで既に作成してある少なくとも 1 つのアプリケーション。
- 「Azure Spring Apps で独自の永続ストレージを有効にする方法」で説明されている独自の永続ストレージ。 このストレージは、生成された診断ファイルを保存するために使用されます。 以下のパラメーター値に指定するパスは、アプリにバインドされている永続ストレージのマウント パスの下に置かれている必要があります。 マウント パスの下にパスを使用する場合は、必ず事前にサブパスを作成してください。
ヒープ ダンプを生成する
Azure Spring Apps でアプリのヒープ ダンプを生成するには、次のコマンドを使用します。
az spring app deployment generate-heap-dump \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app <app-name> \
--deployment <deployment-name> \
--app-instance <app-instance name> \
--file-path <your-target-file-path-in-your-persistent-storage-mount-path>
スレッド ダンプを生成する
Azure Spring Apps でアプリのスレッド ダンプを生成するには、次のコマンドを使用します。
az spring app deployment generate-thread-dump \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app <app-name> \
--deployment <deployment-name> \
--app-instance <app-instance name> \
--file-path <your-target-file-path-in-your-persistent-storage-mount-path>
JFR を開始する
Azure Spring Apps でアプリの JFR を開始するには、次のコマンドを使用します。
az spring app deployment start-jfr \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app <app-name> \
--deployment <deployment-name> \
--app-instance <app-instance name> \
--file-path <your-target-file-path-in-your-persistent-storage-mount-path> \
--duration <duration-of-JFR>
duration
の既定値は 60 秒です。
Azure portal を使用してダンプを生成する
Azure Spring Apps でアプリのヒープまたはスレッド ダンプを生成するには、次の手順を実行します。
Azure portal で、ターゲットアプリに移動し、[トラブルシューティング] を選択します。
[トラブルシューティング] ウィンドウで、収集するアプリ インスタンスとダンプの種類を選択します。
[ファイル パス] フィールドで、永続ストレージのマウント パスを指定します。
[収集] を選択します。
診断ファイルを取得する
永続ストレージのターゲット ファイル パスに移動し、ダンプ/JFR を見つけます。 そこからローカル コンピューターにこれらをダウンロードできます。 生成されるファイルの名前は、ヒープ ダンプの場合は <app-instance>_heapdump_<time-stamp>.hprof
、スレッド ダンプの場合は <app-instance>_threaddump_<time-stamp>.txt
、JFR ファイルの場合は <app-instance>_JFR_<time-stamp>.jfr
のようになります。