أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المشكلة
يتلقّى تطبيق العميل رمز حالة 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 Gateway Timeout.
الأسباب المحتملة
في Apigee Edge، السبب الشائع لظهور الرمز 504 Gateway Timeout من خادم الخلفية هو:
| السبب | الوصف | تعليمات تحديد المشاكل وحلّها في |
|---|---|---|
| استجابة خادم الخلفية برمز الخطأ 504 Gateway Timeout | تنتهي مهلة خادم الخلفية ويعرض استجابة 504 Gateway Timeout على "معالج الرسائل". | مستخدمو Edge Private Cloud وPublic Cloud |
استجابة خادم الخلفية برمز الخطأ 504 Gateway Timeout
قد يستجيب خادم الخلفية برمز استجابة HTTP 504 Gateway Timeout.
التشخيص
يوضّح هذا القسم كيفية تشخيص الخطأ 504 Gateway Timeout بشكل صحيح. يتم إدراج الإجراءات الخاصة بمستخدمي السحابة الخاصة والعامة.
الإجراء رقم 1: استخدام Trace (لمستخدمي السحابة الإلكترونية الخاصة والعامة)
- فعِّل التتبُّع في واجهة مستخدم Apigee لواجهة برمجة التطبيقات المتأثرة.
- أرسِل طلبًا إلى خادم الخلفية.
- إذا كان طلب بيانات من واجهة برمجة التطبيقات الذي تعذّر تنفيذه يعرض الردّ 504 من خادم الخلفية في "التتبُّع"، يكون خادم الخلفية هو سبب الخطأ "504 Gateway Timeout".
- لتحديد وقت الاستجابة، انقر على مرحلة تم تلقّي الرد من الخادم المستهدف في "التتبُّع". في المثال الموضّح، المدة المنقضية هي 60004 ملي ثانية:

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

يعرض قسم عناوين الاستجابة في "تفاصيل المرحلة" قيمتَي
X-Apigee-fault-codeوX-Apigee-fault-source، كما هو موضّح في الشكل أدناه:
إذا كانت هذه الحقول تحتوي على القيم الموضّحة في الجدول أدناه، يكون مصدر استجابة الخطأ 504 هو خادم الخلفية:
عناوين الاستجابة القيمة X-Apigee-fault-source target X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
تحقَّق من
تسلسل الخوادم الوكيلة. اتّبِع الخطوات التالية لتحديد ما إذا كان خادم الخلفية يستدعي وكيلًا آخر
في Apigee:
- ارجع إلى مرحلة تم إرسال الطلب إلى الخادم المستهدف وانقر على الزر عرض Curl لعرض الاسم المستعار لمضيف خادم الخلفية.
- إذا كان الاسم المستعار لمضيف خادم الخلفية يشير إلى اسم مستعار لمضيف افتراضي، يكون ربط الخوادم الوكيلة مفعّلاً. كرِّر الخطوات أعلاه لكل وكيل سلسلة لتشخيص سبب ظهور رسالة الخطأ 504 Gateway Timeout. يمكن تشخيص أخطاء المهلة 504 Gateway التي تحدث في الخوادم الوكيلة المتسلسلة في مراحل أخرى من دورة طلب/استجابة باستخدام دليل التشغيل هذا.
- إذا كان اسم المضيف المستعار لخادم الخلفية يشير إلى خادم الخلفية، انتقِل إلى قسم الحل.
الإجراء رقم 2: استدعاء واجهة برمجة تطبيقات خادم الخلفية مباشرةً (مستخدمو السحابة العامة والخاصة)
اتّصِل بخادم الخلفية مباشرةً لتأكيد سلوك الردّ نفسه الذي تم رصده بشأن الخطأ 504 Gateway Timeout عندما يتم إرسال الطلب من خلال Apigee Edge.
- تأكَّد من توفُّر جميع العناوين ومَعلمات طلب البحث وبيانات الاعتماد المطلوبة لإرسالها إلى خادم الخلفية كجزء من الطلب.
- إذا كانت خدمة الخلفية متاحة للجميع، يمكنك استخدام الأمر
curlأو Postman أو أي برنامج آخر من برامج REST Client واستدعاء واجهة برمجة التطبيقات لخادم الخلفية مباشرةً. - إذا كان خادم الواجهة الخلفية لا يمكن الوصول إليه إلا من "معالجات الرسائل"، استخدِم الأمر
curlأو Postman أو أي برنامج آخر من برامج REST Client لاستدعاء واجهة برمجة التطبيقات لخادم الواجهة الخلفية مباشرةً من "معالج الرسائل". - إذا عرضت خدمة الخلفية الرد 504 Gateway Timeout، انتقِل إلى الحل.
الإجراء رقم 3: التحقّق من سجلّات الوصول إلى NGINX (لمستخدمي السحابة الخاصة فقط)
يمكن أن تساعد سجلّات الوصول إلى NGINX في تحديد ما إذا كان خادم الخلفية قد أرسل استجابة الخطأ 504. ويكون ذلك مفيدًا بشكل خاص إذا حدثت المشكلة في الماضي أو بشكل متقطع أو إذا تعذّر تسجيلها في "التتبُّع". اتّبِع الخطوات التالية للتحقّق من سجلّات الوصول إلى NGINX:
- اطّلِع على سجلّات الوصول إلى NGINX باستخدام الأمر التالي:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- ابحث عن ردود الخطأ 504 لوكيل واجهة برمجة التطبيقات المتأثر. يمكنك التحقّق من فترة زمنية معيّنة إذا حدثت المشكلة في الماضي، أو تحديد ما إذا كانت الطلبات لا تزال تتلقّى رمز استجابة الخطأ 504.
- في حال ظهور أي ردود تتضمّن الخطأ 504، حدِّد ما إذا كان مصدر الردود هو خادم الخلفية.
- راجِع خادم وكيل واجهة برمجة التطبيقات المتأثر للتحقّق من ربط الخوادم الوكيلة، أي أنّ خادم الخلفية/نقطة النهاية المستهدَفة يستدعي خادمًا وكيلاً آخر في Apigee. إذا كان خادم وكيل واجهة برمجة التطبيقات يستخدم ربط الخوادم الوكيلة ، كرِّر الخطوات أعلاه لكل خادم وكيل مرتبط لتحديد سبب ظهور رسالة الخطأ 504 Gateway Timeout. يمكن تشخيص أخطاء انتهاء المهلة 504 Gateway التي تحدث في الخوادم الوكيلة المتسلسلة في مراحل أخرى باستخدام دليل التشغيل هذا.
- في حال عدم توفّر تسلسل الخوادم الوكيلة، وكان مصدر استجابة الخطأ 504 هو خادم الخلفية، انتقِل إلى الحل.
الشكل أدناه هو مثال على إدخال في سجلّ NGINX يعرض استجابة الخطأ 504 الناتجة عن الخادم المستهدف:

إذا كان الحقلان X-Apigee-fault-source وX-Apigee-fault-code يحتويان على القيم الموضّحة في الجدول أدناه، يكون مصدر الردّ 504 هو خادم الخلفية:
| عناوين الاستجابة | القيمة |
|---|---|
| X-Apigee-fault-source | target |
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
الإجراء رقم 4: استخدام خدمة "مراقبة واجهة برمجة التطبيقات" (لمستخدمي السحابة الإلكترونية العامة فقط)
تتيح لك ميزة مراقبة واجهة برمجة التطبيقات تحديد المشاكل بسرعة لتشخيص الأخطاء ومشاكل الأداء ووقت الاستجابة ومصدرها، مثل تطبيقات المطوّرين أو خوادم وكيل واجهة برمجة التطبيقات أو أهداف الخلفية أو منصة واجهة برمجة التطبيقات.
تتبُّع سيناريو نموذجي يوضّح كيفية تحديد المشاكل وحلّها في واجهات برمجة التطبيقات التي تعرض رموز الحالة 5xx باستخدام خدمة "مراقبة واجهة برمجة التطبيقات" على سبيل المثال، يمكنك إعداد تنبيه لإعلام المشرفين عندما يتجاوز عدد رموز الحالة 504 حدًا معيّنًا.
.الدقة
باستخدام إجراءات التشخيص الموضّحة أعلاه، يمكنك العمل مع فريق خادم الواجهة الخلفية لحلّ المشكلة في خادم الواجهة الخلفية. وقد يشمل ذلك تعديل المهلات في خوادم الخلفية أو المهلات في أي موازنات تحميل أمام الخوادم المستهدَفة.
جمع معلومات التشخيص
في حال استمرار المشكلة، يُرجى مشاركة معلومات التشخيص التالية مع فريق دعم Apigee.
إذا كنت من مستخدمي Public Cloud، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم خادم وكيل لواجهة برمجة التطبيقات
- أمر
curlالكامل المستخدَم لإعادة إنتاج استجابة الخطأ 504 - تتبُّع ملف يتضمّن طلبات بيانات من واجهة برمجة التطبيقات تتلقّى رمز استجابة الخطأ 504 Gateway Timeout
إذا كنت من مستخدمي Private Cloud، يُرجى تقديم المعلومات التالية:
- رسالة الخطأ الكاملة التي تم رصدها للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة خادم وكيل لواجهة برمجة التطبيقات
- تتبُّع ملف يتضمّن طلبات بيانات من واجهة برمجة التطبيقات تتلقّى رمز استجابة الخطأ 504 Gateway Timeout
- سجلّات الوصول إلى NGINX
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- سجلّات "معالج الرسائل"
/opt/apigee/var/log/edge-message-processor/logs/system.log