Gunakan pengaturan diagnostik opsi JVM untuk pemecahan masalah lanjutan di Azure Spring Apps

Catatan

Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.

Artikel ini berlaku untuk: ✔️ Java ❌ C#

Artikel ini berlaku untuk: ️✔️ Tingkat Dasar/Standar ️✔️ Tingkat Enterprise

Artikel ini menunjukkan cara menggunakan pengaturan diagnostik melalui opsi JVM untuk melakukan pemecahan masalah tingkat lanjut di Azure Spring Apps.

Ada beberapa parameter startup aplikasi berbasis JVM yang terkait dengan heap dump, Java Flight Recorder (JFR), dan log pengumpulan sampah (GC). Di Azure Spring Apps, kami mendukung konfigurasi JVM menggunakan opsi JVM.

Untuk informasi selengkapnya tentang mengonfigurasi parameter pengaktifan aplikasi berbasis JVM, lihat penyebaran aplikasi spring az dalam dokumentasi referensi Azure CLI. Bagian berikut ini menyediakan beberapa contoh nilai yang berguna untuk parameter --jvm-options.

Prasyarat

  • Instans layanan Azure Spring Apps yang disebarkan. Ikuti mulai cepat untuk menyebarkan aplikasi melalui Azure CLI untuk memulai.
  • Setidaknya satu aplikasi sudah dibuat di instans layanan Anda.
  • Penyimpanan persisten Anda sendiri seperti yang dijelaskan dalam Cara mengaktifkan penyimpanan persisten Anda sendiri di Azure Spring Apps. Penyimpanan ini digunakan untuk menyimpan file diagnostik yang dihasilkan. Jalur yang Anda berikan dalam nilai parameter di bawah ini harus berada di bawah jalur pemasangan penyimpanan persisten yang terikat ke aplikasi Anda. Jika Anda ingin menggunakan jalur di bawah jalur pemasangan, pastikan untuk membuat subjalur sebelumnya.

Menghasilkan heap dump saat kehabisan memori

Gunakan parameter --jvm-options berikut untuk menghasilkan heap dump saat Anda mengalami kesalahan kehabisan memori.

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

Sebagai alternatif untuk menentukan jalur ke folder heap dump, Anda dapat memberikan nama file tertentu. Namun, kami sangat menyarankan Anda menyediakan jalur folder sebagai gantinya. Jika Anda memberikan nama file, perintah akan menghasilkan heap dump untuk kesalahan kehabisan memori pertama saja, karena keterbatasan format file HPROF. Jika Anda menyediakan jalur folder, Anda akan mendapatkan heap dump dalam file dengan nama yang dibuat secara otomatis untuk setiap kesalahan kehabisan memori.

Menghasilkan log GC

Gunakan parameter --jvm-options berikut untuk menghasilkan log GC. Untuk informasi lebih lanjut, lihat dokumentasi JVM resmi.

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

Menghasilkan file JFR saat keluar

Gunakan parameter --jvm-options berikut untuk menghasilkan file JFR. Untuk informasi lebih lanjut, lihat dokumentasi JVM resmi.

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

Mengonfigurasi jalur untuk file yang dihasilkan

Untuk memastikan bahwa Anda dapat mengakses file Anda, pastikan bahwa jalur target file yang Anda buat berada di penyimpanan persisten yang terikat ke aplikasi Anda. Misalnya, Anda dapat menggunakan JSON yang mirip dengan contoh berikut saat membuat penyimpanan persisten di Azure Spring Apps.

    {
       "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
              }
          }
       ]
    }

Sebagai alternatif, Anda dapat menggunakan perintah berikut untuk menambahkan ke penyimpanan persisten.

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>

Langkah berikutnya