استكشاف مشكلات Azure Spring Apps الشائعة وإصلاحها

إشعار

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

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

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

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

التوفر والأداء ومشكلات التطبيق

يتعذر بدء تشغيل التطبيق الخاص بي

عندما يتعذر بدء تشغيل التطبيق الخاص بك، قد تجد أنه لا يمكن توصيل نقطة النهاية الخاصة به أو إرجاع 502 بعد عدد قليل من عمليات إعادة المحاولة.

لاستكشاف الأخطاء وإصلاحها، قم بتصدير السجلات إلى Azure Log Analytics. تمت تسمية جدول سجلات تطبيق Spring باسم AppPlatformLogsforSpring. لمعرفة المزيد، راجع تحليل السجلات والقياسات باستخدام إعدادات التشخيص.

قد تظهر رسالة الخطأ التالية في سجلاتك: org.springframework.context.ApplicationContextException: Unable to start web server

تشير الرسالة إلى إحدى مشكلتين محتملتين:

  • أحد الفول أو أحد تبعياته مفقود.
  • إحدى خصائص الفول مفقودة أو غير صالحة. في هذه الحالة، يتم عرض "java.lang.IllegalArgumentException".

قد تتسبب ارتباطات الخدمة أيضاً في فشل بدء التطبيق. للاستعلام عن السجلات، استخدم الكلمات الأساسية ذات الصلة بالخدمات المرتبطة. على سبيل المثال، لنفترض أن التطبيق الخاص بك لديه ارتباط بمثيل MySQL تم ضبطه على وقت النظام المحلي. إذا فشل التطبيق في بدء التشغيل، فقد تظهر رسالة الخطأ التالية في السجل:

"java.sql.SQLException: The server time zone value 'Coordinated Universal Time' is unrecognized or represents more than one time zone."

لإصلاح هذا الخطأ، انتقل إلى server parameters مثيل MySQL، وقم بتغيير القيمة time_zone من SYSTEM إلى +0: 00.

تعطل تطبيقي أو طرح خطأ غير متوقع

عندما تقوم بتصحيح أخطاء التطبيق، ابدأ بالتحقق من حالة التشغيل واكتشاف حالة التطبيق. للقيام بذلك، انتقل إلى التطبيقات في مدخل Microsoft Azure للتأكد من أن حالات جميع التطبيقات قيد التشغيل و UP.

  • إذا كانت الحالة قيد التشغيل ولكن حالة الاكتشاف ليست UP، فانتقل إلى قسم "لا يمكن تسجيل تطبيقي".

  • إذا كانت حالة الاكتشاف UP، فانتقل إلى Metrics للتحقق من صحة التطبيق. افحص القياسات التالية:

    • tomcat.global.error:

      يتم حساب جميع استثناءات تطبيق Spring هنا. إذا كان هذا الرقم كبيراً، فانتقل إلى Azure Log Analytics لفحص سجلات التطبيق.

    • jvm.memory.max:

      الحد الأقصى لمقدار الذاكرة المتوفرة للتطبيق. قد يكون المبلغ غير معرف، أو قد يتغير بمرور الوقت إذا تم تعريفه. إذا تم تحديده، فإن مقدار الذاكرة المستخدمة والملتزمة يكون دائماً أقل من أو يساوي الحد الأقصى. ومع ذلك، قد يفشل تخصيص الذاكرة برسالة OutOfMemoryError إذا حاول التخصيص زيادة الذاكرة المستخدمة بحيث استخدم > ملتزماً، حتى إذا تم استخدامه <= max لا يزال صحيحاً. في مثل هذه الحالة، حاول زيادة الحد الأقصى لحجم كومة الذاكرة المؤقتة باستخدام المعلمة -Xmx.

    • jvm.memory.used:

      مقدار الذاكرة بالبايت المستخدمة حالياً بواسطة التطبيق. بالنسبة لتطبيق Java ذي التحميل العادي، تشكل هذه السلسلة المترية نمط سن المنشار، حيث يزداد استخدام الذاكرة بشكل مطرد وينخفض ​​بزيادات صغيرة وينخفض ​​كثيراً، ثم يتكرر النمط مرة أخرى. تحدث هذه السلسلة المترية بسبب تجميع البيانات المهملة داخل آلة Java الظاهرية، حيث تمثل إجراءات التجميع قطرات على نمط سن المنشار.

      هذا المقياس مهم للمساعدة في تحديد مشاكل الذاكرة، مثل:

      • انفجار الذاكرة في البداية.
      • تخصيص ذاكرة زيادة السرعة لمسار منطقي معين.
      • تسرب الذاكرة التدريجي.

    لمزيد من المعلومات، راجع القياسات.

    إشعار

    تتوفر هذه المقاييس فقط لتطبيقات Spring Boot. لتمكين هذه المقاييس، أضف التبعية spring-boot-starter-actuator . لمزيد من المعلومات، راجع قسم Add actuator dependency في إدارة ومراقبة التطبيق باستخدام Spring Boot Actuator.

  • إذا فشل التطبيق في بدء التشغيل، فتحقق من أن التطبيق يحتوي على معلمات jvm صالحة. إذا تم تعيين ذاكرة jvm عالية جداً، فقد تظهر رسالة الخطأ التالية في سجلاتك:

    "الذاكرة المطلوبة 2728741 كيلو أكبر من 2000 ميجا متوفرة للتخصيص"

لمعرفة المزيد حول Azure Log Analytics، راجع البدء في استخدام تحليلات السجل في Azure Monitor.

مواجهة تطبيقي استخداماً عالياً لوحدة المعالجة المركزية أو استخداماً عالياً للذاكرة

إذا كان تطبيقك يستخدم وحدة المعالجة المركزية أو الذاكرة بشكل كبير، فإن أحد أمرين يكون صحيحاً:

  • تواجه جميع مثيلات التطبيق استخداماً عالياً لوحدة المعالجة المركزية أو الذاكرة.
  • تواجه بعض مثيلات التطبيق استخداماً عالياً لوحدة المعالجة المركزية أو الذاكرة.

للتأكد من الحالة التي تنطبق، استخدم الخطوات التالية:

  1. انتقل إلى القياسات، ثم حدد إما ervice CPU Usage Percentage أو Service Memory Used.
  2. أضف عامل تصفية التطبيق = لتحديد التطبيق الذي تريد مراقبته.
  3. قسّم القياسات حسب المثيل.

إذا كانت جميع المثيلات تواجه استخداماً عالياً لوحدة المعالجة المركزية أو الذاكرة، فأنت بحاجة إلى توسيع نطاق التطبيق أو زيادة استخدام وحدة المعالجة المركزية أو الذاكرة. لمزيد من المعلومات، راجع البرنامج التعليمي: قياس أحد التطبيقات في Azure Spring Apps.

إذا كانت بعض الحالات تواجه استخداماً عالياً لوحدة المعالجة المركزية أو الذاكرة، فتحقق من حالة المثيل وحالة اكتشافه.

لمزيد من المعلومات، راجع قياسات Azure Spring Apps.

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

لمعرفة المزيد حول Azure Log Analytics، راجع البدء في استخدام تحليلات السجل في Azure Monitor. استعلم عن السجلات باستخدام لغة الاستعلام Kusto.

قائمة التحقق لتوزيع تطبيق Spring على Azure Spring Apps

قبل أن تقوم بإعداد طلبك، تأكد من أنه يفي بالمعايير التالية:

  • يمكن تشغيل التطبيق محلياً باستخدام إصدار Java runtime المحدد.
  • يفي تكوين البيئة (CPU / RAM / المثيلات) بالحد الأدنى من المتطلبات التي حددها موفر التطبيق.
  • عناصر التكوين لها قيمها المتوقعة. لمزيد من المعلومات، راجع إعداد مثيل Spring Cloud Config Server لخدمتك. للحصول على خطة المؤسسة، راجع استخدام خدمة تكوين التطبيق.
  • متغيرات البيئة لها قيمها المتوقعة.
  • معلمات JVM لها قيمها المتوقعة.
  • نوصي بتعطيل أو إزالة خدمات Config Server وSpring Service Registry المضمنة من حزمة التطبيق.
  • إذا كان يجب ربط أي من موارد Azure عبر ربط الخدمة، فتأكد من تشغيل الموارد المستهدفة.

التكوين والإدارة

مواجهتك مشكلة في إنشاء مثيل خدمة Azure Spring Apps

عندما تقوم بإعداد مثيل خدمة Azure Spring Apps باستخدام مدخل Microsoft Azure، تقوم Azure Spring Apps بإجراء التحقق من الصحة نيابةً عنك.

ولكن إذا حاولت إعداد مثيل خدمة Azure Spring Apps باستخدام Azure CLI أو قالب Azure Resource Manager، فتحقق من استيفاء الشروط التالية:

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

إذا كنت تريد إعداد مثيل خدمة Azure Spring Apps باستخدام قالب Resource Manager، فراجع أولاً فهم بنية وصياغة قوالب Azure Resource Manager.

يتم استخدام اسم مثيل خدمة Azure Spring Apps لطلب اسم مجال فرعي ضمن azuremicroservices.io، لذلك يفشل الإعداد إذا تعارض الاسم مع اسم موجود. قد تجد المزيد من التفاصيل في سجلات النشاط.

عدم استطاعتي توزيع تطبيق .NET Core

لا يمكنك تحميل ملف .zip لتطبيق .NET Core Steeltoe باستخدام مدخل Microsoft Azure أو قالب Resource Manager.

عند توزيع حزمة التطبيق الخاصة بك باستخدام Azure CLI، يقوم Azure CLI باستقصاء تقدم التوزيع بشكل دوري، وفي النهاية، يعرض نتيجة التوزيع.

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

عدم استطاعتي توزيع حزمة JAR

لا يمكنك تحميل ملف Java Archive (JAR) / الحزمة المصدر باستخدام مدخل Microsoft Azure أو قالب Resource Manager.

عند توزيع حزمة التطبيق الخاصة بك باستخدام Azure CLI، يقوم Azure CLI باستقصاء تقدم التوزيع بشكل دوري، وفي النهاية، يعرض نتيجة التوزيع.

إذا تمت مقاطعة الاستقصاء، فلا يزال بإمكانك استخدام الأمر التالي لجلب سجلات التوزيع:

az spring app show-deploy-log --name <app-name>

تأكد من حزم تطبيقك بتنسيق JAR الصحيح القابل للتنفيذ. إذا لم يتم حزمها بشكل صحيح، فستتلقى رسالة خطأ مشابهة للمثال التالي: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111.

عدم استطاعتي توزيع حزمة مصدر

لا يمكنك تحميل حزمة JAR/ المصدر باستخدام مدخل Microsoft Azure أو قالب إدارة الموارد.

عند توزيع حزمة التطبيق الخاصة بك باستخدام Azure CLI، يقوم Azure CLI باستقصاء تقدم التوزيع بشكل دوري، وفي النهاية، يعرض نتيجة التوزيع.

إذا تمت مقاطعة الاستقصاء، فلا يزال بإمكانك استخدام الأمر التالي لجلب سجلات الإنشاء والتوزيع:

az spring app show-deploy-log --name <app-name>

ومع ذلك، يمكن لمثيل خدمة Azure Spring Apps واحد تشغيل مهمة بناء واحدة فقط لحزمة مصدر واحدة في وقت واحد. لمزيد من المعلومات، راجع توزيع تطبيق وإعداد بيئة مرحلية في Azure Spring Apps.

عدم إمكانية تسجيل طلبي

في معظم الحالات، يحدث هذا الموقف عندما لا يتم تكوين التبعيات المطلوبة واكتشاف الخدمة بشكل صحيح في ملف نموذج عنصر المشروع (POM). بمجرد تكوينه، يتم إدخال نقطة نهاية خادم سجل الخدمة المضمنة كمتغير بيئة مع تطبيقك. تقوم التطبيقات بعد ذلك بتسجيل نفسها في خادم سجل الخدمة واكتشاف التطبيقات الأخرى التابعة.

انتظر دقيقتين على الأقل قبل أن يبدأ مثيل مسجل حديثاً في تلقي نسبة استخدام الشبكة.

إذا كنت تقوم بترحيل حل قائم على Spring Cloud موجود إلى Azure، فتأكد من إزالة أو تعطيل مثيلات سجل الخدمة المخصصة وخادم التكوين لتجنب التعارض مع المثيلات المدارة التي توفرها Azure Spring Apps.

يمكنك أيضاً التحقق من سجلات العميل سجل الخدمة في Azure Log Analytics. لمزيد من المعلومات، راجع تحليل السجلات والقياسات باستخدام إعدادات التشخيص

لمعرفة المزيد حول Azure Log Analytics، راجع البدء في استخدام تحليلات السجل في Azure Monitor. استعلم عن السجلات باستخدام لغة الاستعلام Kusto.

أريد فحص متغيرات بيئة التطبيق الخاص بي

تُعلم متغيرات البيئة إطار عمل Azure Spring Apps، وهو ما يضمن أن Azure يفهم مكان وكيفية تكوين الخدمات التي يتكون منها تطبيقك. يعد التأكد من صحة متغيرات البيئة الخاصة بك خطوة أولى ضرورية في استكشاف المشكلات المحتملة وإصلاحها. يمكنك استخدام نقطة نهاية Spring Boot Actuator لمراجعة متغيرات البيئة الخاصة بك.

تحذير

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

  1. انتقل إلى https://<your-application-test-endpoint>/actuator/health.

    تشير استجابة مشابهة لـ {"status":"UP"} إلى أنه تم تمكين نقطة النهاية. إذا كانت الاستجابة سلبية، فقم بتضمين التبعية التالية في ملف POM.xml :

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. مع تمكين نقطة نهاية Spring Boot Actuator، انتقل إلى مدخل Microsoft Azure وابحث عن صفحة التكوين الخاصة بتطبيقك. أضف متغير بيئة بالاسم MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE والقيمة *.

  3. أعد تشغيل التطبيق الخاص بك.

  4. انتقل إلى https://<your-application-test-endpoint>/actuator/env وافحص الاستجابة. يجب أن يبدو مثل هذا:

    {
        "activeProfiles": [],
        "propertySources": {,
            "name": "server.ports",
            "properties": {
                "local.server.port": {
                    "value": 1025
                }
            }
        }
    }
    

ابحث عن العقدة الفرعية المسماة systemEnvironment. تحتوي هذه العقدة على متغيرات بيئة التطبيق الخاص بك.

هام

تذكر عكس الكشف عن متغيرات البيئة الخاصة بك قبل جعل التطبيق الخاص بك في متناول الجمهور. انتقل إلى مدخل Microsoft Azure، وابحث عن صفحة التكوين للتطبيق الخاص بك، واحذف متغير البيئة هذا: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

عدم استطاعتي العثور على قياسات أو سجلات لتطبيقي

انتقل إلى التطبيقات للتأكد من أن حالات التطبيق قيد التشغيل و UP.

تحقق لمعرفة ما إذا كان JMX ممكّناً في حزمة التطبيق الخاص بك. يمكن تمكين هذه الميزة بخاصية التكوين spring.jmx.enabled=true.

تحقق لمعرفة ما إذا كان قد تم تمكين التبعية spring-boot-actuator في حزمة التطبيق الخاص بك وأنه تم التمهيد بنجاح.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

إذا كان من الممكن أرشفة سجلات التطبيق في حساب تخزين ولكن لم يتم إرسالها إلى Azure Log Analytics، فتحقق لمعرفة ما إذا كنت قد أعددت مساحة العمل بشكل صحيح. لمزيد من المعلومات، راجع إنشاء مساحة عمل Log Analytics. أيضا، يجب أن تدرك أن الخطة الأساسية لا توفر اتفاقية على مستوى الخدمة (SLA). لمزيد من المعلومات، راجع اتفاقيات مستوى الخدمة (SLA) للخدمات عبر الإنترنت.

خطة المؤسسة

خطأ 112039: فشل الشراء من Azure Marketplace

فشل إنشاء مثيل خطة Azure Spring Apps Enterprise مع رمز الخطأ "112039". لمزيد من المعلومات، تحقق من رسالة الخطأ التفصيلية في القائمة التالية:

  • "فشل الشراء على Azure Marketplace لأن Microsoft.SaaS RP غير مسجل في اشتراك Azure.": تقوم خطة Azure Spring Apps Enterprise بشراء عرض SaaS من VMware.

    يجب عليك تسجيل Microsoft.SaaS موفر الموارد قبل إنشاء مثيل Azure Spring Apps Enterprise. راجع كيفية تسجيل موفر موارد.

  • "فشل تحميل منتج الكتالوج vmware-inc.azure-spring-cloud-vmware-tanzu-2 في سوق اشتراك Azure.": عنوان حساب فوترة اشتراك Azure الخاص بك ليس في الموقع المدعوم.

    لمزيد من المعلومات، راجع القسم لا توجد خطط متاحة للسوق '<الموقع>'.

  • "Failed to purchase on Azure Marketplace due to signature verification on Marketplace legal agreement. تحقق من أن اشتراك Azure قد وافق على شروط vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr": لم يوقع اشتراكك في Azure على شروط العرض والخطة المراد شراؤها.

    انتقل إلى اشتراك Azure الخاص بك وقم بتشغيل أمر Azure CLI التالي للموافقة على الشروط:

    az term accept \
        --publisher vmware-inc \
        --product azure-spring-cloud-vmware-tanzu-2 \
        --plan asa-ent-hr-mtr
    

    إذا لم يساعد ذلك، يمكنك الاتصال بفريق الدعم بالمعلومات التالية.

    • AZURE_TENANT_ID: معرف مستأجر Azure الذي يستضيف اشتراك Azure
    • AZURE_SUBSCRIPTION_ID: معرف اشتراك Azure المستخدم لإنشاء مثيل Azure Spring Apps
    • SPRING_CLOUD_NAME: اسم المثيل الفاشل
    • ERROR_MESSAGE: رسالة الخطأ الملحوظة

عدم وجود خطط متاحة للسوق '<الموقع>'

عند زيارة عرض SaaS Azure Spring Apps Enterprise في Azure Marketplace، قد يقول "لا توجد خطط متاحة للسوق "<الموقع>" كما هو الحال في الصورة التالية.

لقطة شاشة لمدخل Microsoft Azure تعرض رسالة الخطأ No plans are available for market.

تحتاج خطة Azure Spring Apps Enterprise إلى أن يدفع العملاء مقابل ترخيص لمكونات Tanzu من خلال عرض Azure Marketplace. للشراء في Azure Marketplace، يجب أن تكون دولة أو منطقة حساب الفوترة لاشتراك Azure في المواقع الجغرافية المدعومة لعرض SaaS.

يدعم Azure Spring Apps Enterprise الآن جميع المواقع الجغرافية التي يدعمها Azure Marketplace. راجع قسم المواقع الجغرافية المدعومة من التوفر الجغرافي ودعم العملة للسوق التجارية.

يمكنك عرض حساب الفوترة لاشتراكك إذا كان لديك حق وصول المسؤول. راجع عرض حسابات الفوترة.

أحتاج إلى دعم وقت تشغيل الربيع VMware (خطة المؤسسة فقط)

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

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