Azure Spring Apps での高度なトラブルシューティングのために JVM オプションの診断設定を使用する

Note

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

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

この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise

この記事では、JVM オプションを介して診断設定を使用し、Azure Spring Apps で高度なトラブルシューティングを行う方法について説明します。

ヒープ ダンプ、Java Flight Recorder (JFR)、およびガベージコレクション (GC) ログに関連する JVM ベースのアプリケーション スタートアップ パラメーターがいくつかあります。 Azure Spring Apps では、JVM オプションを使用した JVM 構成をサポートしています。

JVM ベースのアプリケーションのスタートアップ パラメーターを構成する方法の詳細については、Azure CLI リファレンス ドキュメントの「az spring app deployment」を参照してください。 次のセクションでは、--jvm-options パラメーターの値として有用な例をいくつか紹介します。

前提条件

  • デプロイされた Azure Spring Apps サービス インスタンス。 Azure CLI を使用したアプリのデプロイに関するクイックスタートに従って作業を開始してください。
  • サービス インスタンスで既に作成してある少なくとも 1 つのアプリケーション。
  • Azure Spring Apps で独自の永続ストレージを有効にする方法」で説明されている独自の永続ストレージ。 このストレージは、生成された診断ファイルを保存するために使用されます。 以下のパラメーター値に指定するパスは、アプリにバインドされている永続ストレージのマウント パスの下に置かれている必要があります。 マウント パスの下にパスを使用する場合は、必ず事前にサブパスを作成してください。

メモリが不足したときにヒープ ダンプを生成する

メモリ不足エラーが発生したときにヒープ ダンプを生成するには、次の --jvm-options パラメーターを使用します。

--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"

ヒープ ダンプ フォルダーへのパスを指定する代わりに、特定のファイル名を指定することもできます。 ただし、強く推奨されるのは、フォルダー パスを指定する方です。 ファイル名を指定した場合、コマンドによって生成されるのは、最初のメモリ不足エラーに対するヒープ ダンプのみです。これは、HPROF ファイル形式に制限があるためです。 フォルダー パスを指定すると、メモリ不足エラーが発生するたびに自動生成された名前を持つファイルにヒープ ダンプが取り込まれます。

GC ログを生成する

GC ログを生成するには、次の --jvm-options パラメーターを使用します。 詳細については、JVM の公式ドキュメントを参照してください。

--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"

終了時に JFR ファイルを生成する

JFR ファイルを生成するには、次の --jvm-options パラメーターを使用します。 詳細については、JVM の公式ドキュメントを参照してください。

--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"

生成されたファイルのパスを構成する

該当するファイルに確実にアクセスできるようにするには、生成されたファイルのターゲット パスが、アプリにバインドされている永続ストレージ内に配置されるようにしてください。 たとえば、Azure Spring Apps で永続ストレージを作成する場合は、次の例のような JSON を使用できます。

    {
       "customPersistentDisks": [
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "mountOptions": [
                      "uid=0",
                      "gid=0"
                   ],
                   "readOnly": false 
                }
          },
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "readOnly": true
              }
          }
       ]
    }

または、次のコマンドを使用して永続ストレージに追加することもできます。

az spring app append-persistent-storage \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --persistent-storage-type AzureFileVolume \
    --storage-name <storage-resource-name> \
    --share-name <azure-file-share-name> \
    --mount-path <unique-mount-path>

次のステップ