Azure Spring Apps でヒープ ダンプとスレッド ダンプを手動でキャプチャして Java Flight Recorder を使用する

Note

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象: ✔️ Java ❌ C#

この記事の適用対象: ✔️ 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 でアプリのヒープまたはスレッド ダンプを生成するには、次の手順を実行します。

  1. Azure portal で、ターゲットアプリに移動し、[トラブルシューティング] を選択します。

    Screenshot of the Azure portal showing the app Overview page with the Troubleshooting button highlighted.

  2. [トラブルシューティング] ウィンドウで、収集するアプリ インスタンスとダンプの種類を選択します。

    Screenshot of the Azure portal Troubleshooting pane.

  3. [ファイル パス] フィールドで、永続ストレージのマウント パスを指定します。

  4. [収集] を選択します。

診断ファイルを取得する

永続ストレージのターゲット ファイル パスに移動し、ダンプ/JFR を見つけます。 そこからローカル コンピューターにこれらをダウンロードできます。 生成されるファイルの名前は、ヒープ ダンプの場合は <app-instance>_heapdump_<time-stamp>.hprof、スレッド ダンプの場合は <app-instance>_threaddump_<time-stamp>.txt、JFR ファイルの場合は <app-instance>_JFR_<time-stamp>.jfr のようになります。

次のステップ