500 خطأ في الخادم الداخلي - خادم الخلفية

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الفيديوهات الطويلة

حملة فيديو الوصف
خطأ 500 في الخادم الداخلي، بسبب الخلفية يوضح 500 Internal Server Error في الوقت الفعلي الذي يتسبب فيه الخادم الخلفي مع خطوات تحديد المشاكل وحلّها وحلها.

المشكلة

يحصل تطبيق العميل على رمز حالة HTTP لـ 500 مع الرسالة Internal Server Error كاستجابة لطلبات واجهة برمجة التطبيقات.

رمز حالة HTTP 500 هو استجابة عامة لخطأ. يعني ذلك أنّ الخادم واجه حالة غير متوقعة تمنعه من تنفيذ الطلب. يعرض الخادم عادةً هذا الخطأ عندما لا يكون هناك رمز خطأ آخر مناسب.

رسائل الخطأ

يتلقى تطبيق العميل رمز الاستجابة التالي:

HTTP/1.1 500 Internal Server Error

بالإضافة إلى ذلك، قد تلاحظ رسالة خطأ مشابهة للرسالة المعروضة أدناه:

النموذج الأول

نموذج استجابة خادم الخلفية رقم 1

{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}

النموذج الثاني

نموذج استجابة خادم الخلفية رقم 2

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <Body>
      <Error>
         <code>500</code>
         <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
      </Error>
   </Body>
</Envelope>

الأسباب المحتملة

يمكن عرض 500 Internal Server Error من خلال خادم الخلفية لعدد من الأسباب. يوضّح هذا الدليل الإرشادي كيفية تحديد المشاكل وحلّها باتّباع الخطوات الشائعة وحلّ هذا الخطأ بغض النظر عن سببه.

في ما يلي الأسباب المحتمَلة لهذه المشكلة:

السبب الوصف تعليمات تحديد المشاكل وحلّها السارية على
حدث خطأ في خادم الخلفية قد يفشل خادم الخلفية لسبب من الأسباب. مستخدمو Edge الخاص والعام على Cloud

خطوات التشخيص الشائعة

استخدِم إحدى الأدوات/الأساليب التالية لتشخيص هذا الخطأ:

مراقبة واجهة برمجة التطبيقات

الإجراء الأول: استخدام مراقبة واجهة برمجة التطبيقات

لتشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات:

  1. سجِّل الدخول إلى واجهة مستخدم Apigee Edge كمستخدم لديه دور مناسب.
  2. انتقِل إلى المؤسسة التي تريد التحقيق في المشكلة فيها.

  3. انتقل إلى صفحة تحليل > مراقبة واجهة برمجة التطبيقات > التحقيق.
  4. اختَر الإطار الزمني المحدّد الذي لاحظت فيه الأخطاء.
  5. ارسم رمز الخطأ مقابل الوقت.

  6. اختَر خلية تحتوي على رمز الخطأ messaging.adaptors.http.flow.ErrorResponseCode كما هو موضّح أدناه:

    ( عرض صورة أكبر حجمًا)

  7. يتم عرض المعلومات المتعلقة برمز الخطأ messaging.adaptors.http.flow.ErrorResponseCode كما هو موضّح أدناه:

    ( عرض صورة أكبر حجمًا)

  8. انقر على عرض السجلات ووسِّع الصف المتعلق بالطلب الذي تعذّر إكماله.

    ( عرض صورة أكبر حجمًا)

  9. من نافذة السجلّات، دوِّن التفاصيل التالية:
    • طلب معرّف الرسالة
    • رمز الحالة: 500
    • مصدر الخطأ: target
    • رمز الخطأ: messaging.adaptors.http.flow.ErrorResponseCode

التتبّع

الإجراء الثاني: استخدام أداة التتبُّع

لتشخيص الخطأ باستخدام أداة التتبُّع:

  1. فعِّل جلسة التتبُّع وإمّا
    • انتظِر حتى يظهر الخطأ 500 Internal Server Error الذي يتضمّن رمز الخطأ messaging.adaptors.http.flow.ErrorResponseCode.
    • إذا كان بإمكانك إعادة إظهار المشكلة، يمكنك طلب بيانات من واجهة برمجة التطبيقات لإعادة إظهار المشكلة. 500 Internal Server Error
  2. تأكَّد من تفعيل Show all FlowInfos (إظهار جميع عمليات التدفق):

  3. اختَر أحد الطلبات التي تعذّر تنفيذها وافحص بيانات التتبّع.
  4. تنقَّل عبر المراحل المختلفة من عملية التتبُّع وحدِّد مكان حدوث الفشل.
  5. ستجد الخطأ عادةً في إحدى العمليات بعد مرحلة الاستجابة التي تم تلقّيها من الخادم الهدف كما هو موضّح أدناه:

    ( عرض صورة أكبر حجمًا)

  6. انتقِل إلى مرحلة AX (بيانات "إحصاءات Google" المسجّلة) في التتبُّع وانقر عليها.
  7. انتقِل للأسفل إلى القسم Stage Details Responses (عناوين استجابة تفاصيل المرحلة) وحدِّد قيم X-Apigee-Error-code وX-Apigee- error-source وX-Apigee-Message-ID كما هو موضّح أدناه:

    ( عرض صورة أكبر حجمًا)

  8. لاحِظ قيم X-Apigee-fault-code وX-Apigee-fault-code وX-Apigee-fault-code:
  9. عناوين الاستجابة القيمة
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target
    X-Apigee-Message-ID MESSAGE_ID

NGINX

الإجراء 3: استخدام سجلات الوصول إلى NGINX

لتشخيص الخطأ باستخدام سجلات الوصول إلى NGINX:

  1. إذا كنت من مستخدمي السحابة الإلكترونية الخاصة، يمكنك استخدام سجلات وصول NGINX لتحديد المعلومات الأساسية حول HTTP 500 Internal Server Error.
  2. تحقَّق من سجلات وصول NGINX:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. ابحث عن أي أخطاء 500 تتضمّن رمز الخطأ messaging.adaptors.http.flow.ErrorResponseCode خلال مدة معيّنة (إذا حدثت المشكلة في الماضي) أو لمعرفة ما إذا كانت هناك أي طلبات لا تزال يتعذّر تنفيذها مع 500.
  4. إذا عثرت على أي أخطاء 500 تتضمّن X-Apigee-fault-code مطابِقًا لقيمةX-Apigee-fault-code ، حدِّد قيمة X-Apigee-fault-code

    نموذج الخطأ 500 من سجل وصول NGINX:

    ( عرض صورة أكبر حجمًا)

    يحتوي إدخال النموذج أعلاه من سجل الوصول إلى NGINX على القيم التالية للسمة X-Apigee-fault-code وX-Apigee-fault-code .

    العناوين القيمة
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target

السبب: خطأ في خادم الخلفية

التشخيص

قد يرجع سبب استجابة 500 Internal Server Error من الخادم الخلفية إلى عدة أسباب. ستحتاج إلى تشخيص كل حالة بشكل مستقل.

  1. حدِّد رمز الخطأ أو مصدر الخطأ الخاص بالخطأ الذي يتم رصده باستخدام مراقبة واجهة برمجة التطبيقات أو أداة التتبُّع أو سجلات الوصول إلى NGINX كما هو موضّح في خطوات التشخيص الشائعة.
  2. إذا كان مصدر الخطأ هو target ورمز الخطأ هو messaging.adaptors.http.flow.ErrorResponseCode، يشير ذلك إلى عرض الخطأ من خلال خادم الخلفية.
  3. يمكنك اتّباع إحدى الخطوات التالية لتشخيص سبب المشكلة:

    التتبّع

    استخدام التتبُّع:

    إذا كانت لديك جلسة تتبُّع للإخفاق، يمكنك تنفيذ الخطوات التالية:

    1. في صفحة التتبُّع، اختَر طلب البيانات من واجهة برمجة التطبيقات الذي تعذّر في 500 Internal Server Error.
    2. اختَر مرحلة الاستجابة التي تم تلقّيها من الخادم الهدف من تعذُّر إرسال طلب البيانات من واجهة برمجة التطبيقات كما هو موضَّح في الشكل أدناه:

      ( عرض صورة أكبر حجمًا)

    3. مرِّر لأسفل إلى قسم تفاصيل المرحلة وتحقّق من محتوى الاستجابة الذي يتضمن الاستجابة من الخادم الخلفية.

      مثال على محتوى الردود:

      <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <Body>
            <Error>
               <code>500</code>
               <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
            </Error>
         </Body>
      </Envelope>
      

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

    الاتصال بخادم الخلفية

    إجراء اتصال مباشر بخادم الخلفية:

    يمكنك إجراء اتصال مباشر بخادم الخلفية و:

    • تحقَّق ممّا إذا كنت تتلقّى استجابة 500 Internal Server Error نفسها التي تم تلقّيها عندما تم تقديم الطلب من خلال Apigee Edge.
    • التحقق من رسالة الخطأ (الاستجابة) التي تم استلامها من خادم الخلفية

    نفِّذ الخطوات التالية لإجراء الاتصال المباشر بخادم الخلفية:

    1. تأكَّد من توفّر جميع العناوين ومَعلمات طلب البحث المطلوبة وأي بيانات اعتماد يجب تمريرها إلى خادم الخلفية كجزء من الطلب.
    2. إذا كانت خدمة الخلفية متاحة للجميع، يمكنك استخدام الأمر curl أو Postman أو أي عميل REST آخر واستدعاء واجهة برمجة تطبيقات خادم الخلفية مباشرةً.
    3. في حال كان لا يمكن الوصول إلى خادم الخلفية إلا من خلال "معالجات الرسائل"، يمكنك استخدام الأمر curl أو Postman أو أي عميل REST آخر واستدعاء واجهة برمجة تطبيقات خادم الخلفية مباشرةً من "معالج الرسائل".

    4. تحقق مما إذا كانت خدمة الخلفية تعرض 500 Internal Server Error فعلاً وتحقق من رسالة الخطأ (الاستجابة) التي يعرضها خادم الخلفية وحدد سبب هذا الخطأ.

    سجلات خادم الخلفية

    استخدام سجلات خادم الخلفية

    1. راجِع سجلّات الخادم الخلفية وحاوِل الحصول على مزيد من التفاصيل حول الخطأ وسبب حدوثه.
    2. إذا أمكن، فعِّل وضع تصحيح الأخطاء على خادم الخلفية للحصول على مزيد من التفاصيل حول الخطأ والسبب.
  4. تحقَّق ممّا إذا كنت تستخدم تسلسل الخادم الوكيل في نقطة النهاية المستهدفة الخاصة بالخادم الوكيل لواجهة برمجة التطبيقات الذي يتعذّر تطبيقه، بمعنى ما إذا كانت نقطة النهاية المستهدَفة/الخادم الهدف تستدعي خادمًا وكيلاً آخر في Apigee Edge. لتحديد ذلك:

    1. إذا كان لديك تتبُّع الطلب الذي تعذّر تنفيذه، انتقِل إلى مرحلة تم إرسال الطلب إلى الخادم المستهدف وانقر على إظهار عنوان URL.

    2. ستفتح نافذة Curl for Request Send to Target Server (تدوير الطلب المُرسَل إلى خادم الهدف) يمكنك من خلاله تحديد الاسم المستعار لمضيف الخادم الهدف.
    3. راجِع نقطة النهاية المستهدفة للخادم الوكيل لواجهة برمجة التطبيقات وتحقَّق مما إذا كان عنوان URL لخادم الخلفية أو اسم المضيف في الخادم الهدف يشير إلى خادم وكيل آخر أو خادم خلفي خاص بك.
    4. إذا كان الاسم المستعار لمضيف الخادم الهدف يشير إلى اسم مستعار لمضيف افتراضي، يكون ذلك تسلسلاً للخادم الوكيل. في هذه الحالة، يجب تكرار جميع الخطوات السابقة للخادم الوكيل المتسلسل إلى أن تحدد السبب الفعلي في 500 Internal Server Error. وفي هذه الحالات، قد تحدث أخطاء 500 Internal Server Error في الخوادم الوكيلة الأخرى المتسلسلة في مراحل أخرى أيضًا والتي يمكن تشخيصها وحلّها باستخدام التعليمات الواردة في هذا الدليل الإرشادي أو في الدليل الإرشادي "500 خطأ في الخادم الداخلي".
    5. إذا كان الاسم المستعار لمضيف الخادم الهدف يشير إلى خادم الخلفية، فانتقل إلى الدقة.

درجة الدقّة

إذا تم التأكّد من أنّ خطأ 500 صادر من خادم الخلفية، ننصحك بالتعاون مع فريق خادم الخلفية لإصلاح المشكلة بشكل مناسب.

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

نقاط رئيسية يجب ملاحظتها

  1. لا يمكن عرض رسالة الخطأ الفعلية التي يعرضها خادم الخلفية في 500 Internal Server Error إلا إذا سجّلت جلسة تتبُّع الطلبات التي يتعذّر معالجتها.
  2. لأسباب تتعلق بالأمان، لن يتم تسجيل استجابة خادم الخلفية في مراقبة واجهة برمجة التطبيقات أو سجلات الوصول إلى NGINX أو سجلات معالج الرسائل.
  3. يمكنك مراجعة سجلات خادم الخلفية أو تفعيل وضع تصحيح الأخطاء في الخلفية للحصول على مزيد من التفاصيل حول 500 Internal Server Error و/أو عرض رسالة الخطأ التي يعرضها خادم الخلفية.

ضرورة جمع معلومات التشخيص

في حال استمرار المشكلة حتى بعد اتّباع التعليمات الواردة أعلاه، يمكنك جمع معلومات التشخيص التالية والتواصل مع فريق دعم Apigee Edge.

إذا كنت من مستخدمي Cloud Cloud، يُرجى تقديم المعلومات التالية:

  • اسم المؤسسة
  • اسم البيئة
  • اسم الخادم الوكيل لواجهة برمجة التطبيقات
  • أكمِل الأمر curl لإعادة إظهار الخطأ 500.
  • تتبُّع ملف التتبُّع الذي يحتوي على الطلبات من خلال 500 Internal Server Error
  • إذا لم تحدث أخطاء 500 حاليًا، يمكنك توفير معلومات عن المنطقة الزمنية خلال الفترة الزمنية التي حدثت فيها أخطاء 500 في الماضي.

إذا كنت مستخدم Cloud خاصًا، يُرجى تقديم المعلومات التالية:

  • رسالة الخطأ الكاملة التي تم رصدها للطلبات التي تعذّر تنفيذها
  • اسم المؤسسة واسم البيئة واسم الخادم الوكيل لواجهة برمجة التطبيقات التي تراقب أخطاء 500 الخاصة بها
  • حزمة الخادم الوكيل لواجهة برمجة التطبيقات
  • تتبُّع ملف التتبُّع الذي يحتوي على الطلبات من خلال 500 Internal Server Error
  • سجلات وصول NGINX /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    المكان: يتم استبدال ORG وENV وPORT# بالقيم الفعلية.

  • سجلّات نظام "معالج الرسائل" /opt/apigee/var/log/edge-message-processor/logs/system.log
  • الفترة الزمنية التي تتضمّن معلومات المنطقة الزمنية عندما حدثت أخطاء 500.