504 مهلة البوابة من خادم الخلفية

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

المشكلة

يتلقى تطبيق العميل رمز حالة HTTP برقم 504 مع الرسالة "انتهاء مهلة البوابة" استجابةً لاستدعاءات واجهة برمجة التطبيقات.

تشير استجابة الخطأ هذه إلى أنّ العميل لم يتلقَّ ردًا في الوقت المناسب من Apigee Edge أو خادم الخلفية أثناء تنفيذ طلب بيانات من واجهة برمجة التطبيقات.

رسالة الخطأ

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

HTTP/1.1 504 Gateway Timeout

قد تظهر بعد هذه الرسالة رسالة خطأ مشابهة للرسالة الواردة أدناه:

<html>
<head><title>504 Gateway Timeout</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Timeout</h1></center>
</body>
</html>

ما الذي يؤدي إلى انتهاء مهلة البوابة؟

المسار النموذجي لطلب واجهة برمجة التطبيقات الذي يتم إجراؤه عبر Apigee Edge هو العميل -> جهاز التوجيه -> معالج الرسائل -> خادم الخلفية كما هو موضّح في الشكل أدناه:

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

تتم تهيئة تطبيق العميل والموجهات ومعالجات الرسائل بقيم مهلة مناسبة. تتوقّع Apigee Edge ردًا لكل طلب من واجهة برمجة التطبيقات خلال فترة زمنية استنادًا إلى قيم المهلة. وإذا لم يتم تلقي الاستجابة خلال الفترة الزمنية المحددة، فسيتم عرض استجابة 504 لانتهاء مهلة البوابة.

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

في Apigee Edge، يكون السبب النموذجي لاستجابة مهلة بوابة 504 من خادم الخلفية هو:

السبب الوصف تعليمات تحديد المشاكل وحلّها بشأن
استجابة خادم الخلفية بمهلة 504 البوابة تنتهي مهلة الخادم الخلفية ويعرض استجابة 504 لانتهاء مهلة البوابة إلى معالج الرسائل. مستخدمو Edge الخاص والعام على السحابة الإلكترونية

استجابة خادم الخلفية بمهلة 504 البوابة

قد يستجيب خادم الخلفية برمز استجابة HTTP لمهلة 504 البوابة.

التشخيص

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

الإجراء الأول: استخدام التتبُّع (مستخدمو السحابة الإلكترونية الخاصة والعامة)

  1. فعِّل Trace في واجهة مستخدم Apigee لواجهة برمجة التطبيقات المتأثرة.
  2. إرسال طلب إلى خادم الخلفية.
  3. إذا عرض طلب واجهة برمجة التطبيقات الذي تعذّر تنفيذه استجابة 504 من خادم الخلفية في التتبُّع، يكون سبب مهلة 504 البوابة هو خادم الخلفية.
  4. لتحديد وقت الاستجابة، انقر على مرحلة الاستجابة الواردة من الخادم الهدف في ميزة التتبُّع. في المثال المعروض، الوقت المنقضي هو 60004 ملي ثانية:

    تفاصيل المرحلة من واجهة المستخدم

    يوفر قسم تفاصيل المرحلة معلومات إضافية:

    • ويحدد هذا الإعداد استجابة 504 مهلة البوابة التي تم استلامها من الخادم الخلفية.
    • يعرض القسم محتوى الاستجابة النص الكامل للاستجابة الواردة من خادم الخلفية. كما أشرنا سابقًا، قد يختلف التنسيق ومحتوى حمولة الاستجابة استنادًا إلى تنفيذ الخادم الخلفي.
    • قد يشير القسم عنوان الاستجابة > الخادم إلى مكان إنشاء الاستجابة.
  5. لعرض بيانات "إحصاءات Google" وتأكيد التشخيص، انقر على مرحلة بيانات "إحصاءات Google" المسجّلة في علامة التتبُّع، كما هو موضّح في الشكل أدناه:

    تفاصيل الإحصاءات من التتبّع

    يعرض القسم عناوين الاستجابة ضمن تفاصيل المرحلة قيم X-Apigee-fault-code وX-Apigee-fault-source كما هو موضح في الشكل أدناه:

    تفاصيل مرحلة التحليلات من واجهة المستخدم

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

    عناوين الاستجابة القيمة
    X-Apigee-fault-source الاستهداف
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  6. تحقَّق من تسلسل الخادم الوكيل. اتّبِع الخطوات التالية لتحديد ما إذا كان خادم الخلفية يستدعي خادمًا وكيلاً آخر في Apigee:
    1. انتقل مرة أخرى إلى مرحلة تم إرسال طلب إلى الخادم المستهدف وانقر على الزر إظهار Curl لعرض الاسم المستعار لمضيف الخادم الخلفية.
    2. إذا كان الاسم المستعار لمضيف الخادم الخلفي يوجِّه إلى اسم مستعار لمضيف افتراضي، ستكون سلسلة الخادم الوكيل مفعّلة. كرِّر الخطوات أعلاه لكل خادم وكيل متسلسلة من أجل تشخيص سبب استجابة خطأ "انتهاء مهلة البوابة 504". يمكن تشخيص مهلات المدخل التي تحدث في الخوادم الوكيلة المتسلسلة في مراحل أخرى من دورة الطلب/الاستجابة باستخدام هذا الدليل الإرشادي.
    3. إذا كان الاسم المستعار لمضيف خادم الخلفية يشير إلى خادم الخلفية، تابع إلى الحل.

الإجراء الثاني: استدعاء واجهة برمجة تطبيقات خادم الخلفية مباشرةً (مستخدمو السحابة الإلكترونية العامة والخاصة)

يمكنك الاتصال بخادم الخلفية مباشرةً للتأكّد من سلوك الاستجابة لمهلة 504 مدخل "504" نفسه الذي حدث عند تقديم الطلب من خلال Apigee Edge.

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

الإجراء رقم 3: التحقق من سجلات الوصول إلى NGINX (مستخدمو السحابة الإلكترونية الخاصة فقط)

يمكن أن تساعد سجلات وصول NGINX في تحديد ما إذا كان قد تم إرسال استجابة الخطأ 504 من خلال الخادم الخلفي. يكون هذا الإجراء مفيدًا بشكل خاص إذا كانت المشكلة قد حدثت في الماضي أو كانت متقطّعة أو لا يمكن رصدها من خلال ميزة التتبُّع. استخدم هذه الخطوات للتحقق من سجلات وصول NGINX:

  1. يمكنك عرض سجلات وصول NGINX باستخدام هذا الأمر:
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. تحقَّق من وجود استجابات من الخطأ 504 للخادم الوكيل لواجهة برمجة التطبيقات المتأثرة. يمكنك التحقّق من فترة زمنية محدّدة، أو تحديد ما إذا كانت المشكلة قد حدثت في الماضي، أو تحديد ما إذا كانت الطلبات لا تزال يتعذّر إجراؤها مع ظهور رسالة الخطأ 504.
  3. في حال ظهور أي استجابات لخطأ 504، حدِّد ما إذا كان مصدر استجابة الخطأ هو الخادم الخلفية.
  4. الشكل أدناه مثال على إدخال في سجل NGINX يعرض استجابة الخطأ 504 الناتجة عن الخادم الهدف:

    نموذج لسجلات nginx

    إذا كان الحقلان X-Apigee-fault-source وX-Apigee-fault-code يحتويان على القيمتَين الموضّحتَين في الجدول أدناه، تنشأ الاستجابة 504 من خادم الخلفية:

    عناوين الاستجابة القيمة
    X-Apigee-fault-source الاستهداف
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  5. راجِع الخادم الوكيل لواجهة برمجة التطبيقات المتأثر للتحقّق من تسلسل الخادم الوكيل، أي أنّ خادم الخلفية/نقطة النهاية المستهدفة يستدعي خادمًا وكيلاً آخر في Apigee. إذا كان الخادم الوكيل لواجهة برمجة التطبيقات يستخدم تسلسل الخادم الوكيل ، كرِّر الخطوات أعلاه لكل خادم وكيل متسلسلة لتشخيص سبب استجابة الخطأ 504 لانتهاء مهلة البوابة. يمكن تشخيص مهلات البوابة 504 التي تحدث في الخوادم الوكيلة المتسلسلة في مراحل أخرى باستخدام هذا الدليل الإرشادي.
  6. إذا لم يكن هناك تسلسل للخادم الوكيل، وكانت استجابة الخطأ 504 تنشأ من الخادم الخلفي، انتقِل إلى الحلّ.

الإجراء رقم 4: استخدام مراقبة واجهة برمجة التطبيقات (مستخدمو السحابة الإلكترونية العامة فقط)

تتيح لك ميزة مراقبة واجهة برمجة التطبيقات فصل مناطق المشاكل بسرعة لتشخيص مشاكل الخطأ والأداء ووقت الاستجابة ومصدرها، مثل تطبيقات المطوّرين أو الخوادم الوكيلة لواجهة برمجة التطبيقات أو استهدافات الخلفية أو النظام الأساسي لواجهة برمجة التطبيقات.

اطّلِع على نموذج سيناريو يوضّح كيفية تحديد مشاكل 5xx وحلّها في واجهات برمجة التطبيقات باستخدام ميزة "مراقبة واجهة برمجة التطبيقات". على سبيل المثال، يمكنك إعداد تنبيه لإعلام المشرفين عندما يتجاوز عدد رموز الحالة 504 حدًا معيّنًا.

.

درجة الدقّة

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

جمع معلومات التشخيص

في حال استمرار المشكلة، يُرجى مشاركة معلومات التشخيص التالية مع فريق دعم Apigee.

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

  • اسم المؤسسة
  • اسم البيئة
  • اسم الخادم الوكيل لواجهة برمجة التطبيقات
  • إكمال الأمر curl المستخدَم لإعادة إظهار استجابة الخطأ 504
  • تتبُّع ملف طلبات واجهة برمجة التطبيقات التي تتلقى استجابة الخطأ "504 لانتهاء مهلة البوابة"

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

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