استخدام إعدادات التشخيص لخيارات JVM لخيار استكشاف الأخطاء وإصلاحها المتقدم في Azure Spring Apps

إشعار

سيتم إهمال الخطط الأساسية والقياسية والمؤسسة بدءا من منتصف مارس 2025، مع فترة تقاعد 3 سنوات. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع إعلان إيقاف Azure Spring Apps.

سيتم إهمال الاستهلاك القياسي والخطة المخصصة بدءا من 30 سبتمبر 2024، مع إيقاف التشغيل الكامل بعد ستة أشهر. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع ترحيل استهلاك Azure Spring Apps القياسي وخطة مخصصة إلى Azure Container Apps.

هذه المقالة تنطبق على: ✔️ Java ❌ C#‎

تنطبق هذه المقالة على: ✔️ Basic/Standard ✔️ Enterprise

توضح لك هذه المقالة كيفية استخدام إعدادات التشخيص من خلال خيارات JVM لإجراء استكشاف الأخطاء وإصلاحها المتقدم في Azure Spring Apps.

هناك العديد من معلمات بدء تشغيل التطبيق المستندة إلى JVM المتعلقة بتفريغ كومة الذاكرة المؤقتة وسجل Java Flight Recorder (JFR) وسجلات تجميع البيانات المهملة (GC). في Azure Spring Apps، ندعم تكوين JVM باستخدام خيارات JVM.

لمزيد من المعلومات حول تكوين معلمات بدء تشغيل التطبيق المستندة إلى JVM، راجع توزيع تطبيق az spring في الوثائق المرجعية لـ Azure CLI. توفر الأقسام التالية العديد من الأمثلة على القيم المفيدة للمعلمة --jvm-options.

المتطلبات الأساسية

  • مثيل خدمة Azure Spring Apps المُوَزَّعة. اتبع التشغيل السريع لتوزيع تطبيق عبر Azure CLI للبدء.
  • تم إنشاء تطبيق واحد على الأقل بالفعل في مثيل الخدمة.
  • التخزين المستمر كما هو موضح في كيفية تمكين التخزين المستمر في Azure Spring Apps. يتم استخدام هذا التخزين لحفظ ملفات التشخيص التي تم إنشاؤها. يجب أن تكون المسارات التي توفرها في قيم المعلمات أدناه تحت مسار التحميل للتخزين المستمر المرتبط بتطبيقك. إذا كنت تريد استخدام مسار تحت مسار التحميل، فتأكد من إنشاء المسار الفرعي مسبقاً.

إنشاء تفريغ كومة الذاكرة المؤقتة عند نفاد الذاكرة

استخدم المعلمة التالية --jvm-options لإنشاء تفريغ كومة الذاكرة المؤقتة عندما تواجه خطأ نفاد الذاكرة.

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

كبديل لتحديد المسار إلى مجلد تفريغ كومة الذاكرة المؤقتة، يمكنك توفير اسم ملف معين. ومع ذلك، نوصي بشدة بتوفير مسار مجلد بدلا من ذلك. إذا قمت بتوفير اسم ملف، فسينشئ الأمر تفريغ كومة الذاكرة المؤقتة لأول خطأ خارج الذاكرة فقط، بسبب قيود تنسيق ملف HPROF. إذا قمت بتوفير مسار مجلد، فستحصل على تفريغ كومة الذاكرة المؤقتة في ملف باسم تم إنشاؤه تلقائيا لكل خطأ نفاد الذاكرة.

إنشاء سجلات GC

استخدم المعلمة التالية --jvm-options لإنشاء سجلات GC. لمزيد من المعلومات، انظر وثائق JVM الرسمية.

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

إنشاء ملف JFR عند الخروج

استخدم المعلمة التالية --jvm-options لإنشاء ملف JFR. لمزيد من المعلومات، انظر وثائق JVM الرسمية.

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

تكوين مسار الملفات التي تم إنشاؤها

للتأكد من أنه يمكنك الوصول إلى ملفاتك، تأكد من أن المسار الهدف للملف الذي تم إنشاؤه في التخزين المستمر المرتبط بتطبيقك. على سبيل المثال، يمكنك استخدام JSON مشابها للمثال التالي عند إنشاء التخزين المستمر في 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
              }
          }
       ]
    }

بدلا من ذلك، يمكنك استخدام الأمر التالي للإلحاق بالتخزين المستمر.

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>

الخطوات التالية