Azure Spring Apps での高度なトラブルシューティングのために JVM オプションの診断設定を使用する
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 に移行する」を参照してください。
この記事の適用対象:✅️ 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>