أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المشكلة
يحصل تطبيق العميل على رمز حالة HTTP 502 مع الرسالة "البوابة غير الصالحة" كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.
يعني رمز حالة HTTP 502 أن العميل لا يتلقى استجابة صالحة من لخوادم الخلفية التي من المفترض أن تفي بالطلب فعلاً.
رسائل الخطأ
يحصل تطبيق العميل على رمز الاستجابة التالي:
HTTP/1.1 502 Bad Gateway
بالإضافة إلى ذلك، قد تلاحظ رسائل الخطأ التالية:
<html> <head> <title>Error</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>An error occurred.</h1> <p>Sorry, the page you are looking for is currently unavailable.<br/> Please try again later.</p> </body> </html>
إذا كان الخطأ صادرًا من خادم الخلفية، قد يظهر لك شيء من هذا القبيل. تعتمد رسالة الخطأ من الخلفية كليًا على تنفيذها.
<html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> </body> </html>
الأسباب المحتملة
في ما يلي بعض الأسباب المحتملة التي قد تؤدي إلى ظهور الخطأ 502 Bad Gate الخاصة بواجهات برمجة التطبيقات التي تمرّ في Apigee Edge:
السبب | الوصف | تعليمات تحديد المشاكل وحلّها التي تنطبق على |
لا يتوفر أي عضو في المجموعة | ويُلاحَظ هذا الخطأ إذا كان جميع أعضاء البرلمان في المجموعة غير متوفّرين، أي أنّهم إما مشغولون أو مشغولون وبالتالي لا يستجيبون. | مستخدمو Edge Private Cloud |
ضبط طبقة المقابس الآمنة (SSL) بشكل غير صحيح بين أجهزة التوجيه وMPs | تتم ملاحظة هذا الخطأ إذا كانت شهادة الجذر الموقعة من هيئة إصدار الشهادات (CA) الخاصة بالعميل مفقودة في مخزن الثقة في جهاز توجيه Edge. | مستخدمو Edge Private Cloud |
حدث خطأ من خادم الخلفية | ستتم ملاحظة هذا الخطأ في حال تعذُّر خادم الخلفية وإرسال هذه الاستجابة. | مستخدمو Edge Public و Private Cloud |
السبب: عدم توفر أعضاء في مجموعة البرلمان
سيحدث هذا الخطأ إذا وجد جهاز التوجيه أنّ جميع معالِجات الرسائل في منطقة أو مركز بيانات معيّن غير متاحة (على سبيل المثال، إذا كانت جميعها غير متاحة).
يتم ضبط Apigee Edge بطريقة يتم من خلالها توجيه حركة بيانات (الطلبات) الواردة من واجهة برمجة التطبيقات في منطقة أو مركز بيانات معيّنين دائمًا من أجهزة التوجيه إلى معالِجات الرسائل (MPs) في المنطقة أو مركز البيانات نفسه. في بعض الحالات، قد يتم إعداد مكوّنات Apigee Edge في منطقة أو مركز بيانات واحد فقط، وفي بعض الحالات قد يتم إعدادها في أكثر من منطقة أو مركز بيانات واحد. في كل منطقة/مركز بيانات، سيتم إعداد جهازين أو أكثر من أجهزة التوجيه ومعالجات الرسائل.
التشخيص
- عليك تحديد المناطق أو مراكز البيانات التي يتعذّر فيها إرسال طلبات البيانات من واجهة برمجة التطبيقات مع ظهور خطأ 502 "المدخل السيئ"، في حال توفُّر أكثر من منطقة أو مركز بيانات واحد. يمكنك العثور على ذلك إما من خلال تحديد المنطقة التي يلاحظ فيها المستخدمون الأخطاء 502 أو عن طريق التحقق من سجلات NGINX Access في دليل
/opt/apigee/var/log/edge-router/nginx/
على كل جهاز من أجهزة التوجيه التي تنتمي إلى مناطق مختلفة. - سيظهر لك الخطأ التالي في سجلات أخطاء NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)._error_log
2019/06/24 15:26:00 [error] 4796#4796: *56357443 no live upstreams while connecting to upstream, client: <Router_IP_address>, server: <HostAlias>, request: "PUT <BasePath> HTTP/1.1", upstream: "http://<ListOfMP-IP_R-MP-Port>/<BasePath>", host: "<HostAlias>"
السيناريو 1: تعطل جميع معالِجات الرسائل
- تحقق من أن معالِجات الرسائل في المنطقة/مركز البيانات المحددة تعمل بشكل سليم.
- إذا كانت جميع معالِجات الرسائل معطلة، فقم بإعادة تشغيلها.
الدقة
أعِد تشغيل جميع معالِجات الرسائل باستخدام الأمر التالي:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
السيناريو 2: جميع معالجات الرسائل مشغولة بمعالجة الطلبات الجارية
سيحدث هذا الخطأ إذا وجدت أجهزة التوجيه أنّ جميع معالِجات الرسائل في منطقة أو مركز بيانات معيّن غير متاحة لأنّ جميعها مشغولة بمعالجة الطلبات الجارية.
- تحقق من أن معالِجات الرسائل في المنطقة/مركز البيانات المحددة تعمل بشكل سليم.
- إذا كانت جميع معالجات الرسائل نشطة ونشطة، تحقق مما إذا كان معالج (معالجات) الرسائل يواجه معدل استخدام مرتفعًا لوحدة المعالجة المركزية (CPU)، ثم قم بتفريغ ثلاث سلاسل من معالِجات كل 30 ثانية باستخدام الأمر التالي:
<JAVA_HOME>/bin/jstack -l <pid> > <filename>
- إذا تم استخدام الذاكرة بشكل كبير في معالج(معالجات) الرسائل، يمكنك إنشاء لقطة لأجزاء من الذاكرة باستخدام الأمر التالي:
sudo -u apigee
/bin/jmap -dump:live,format=b,file= - أعِد تشغيل معالج الرسائل باستخدام الأمر أدناه. من المفترض أن يؤدي إلى خفض حجم وحدة المعالجة المركزية (CPU) والذاكرة:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- راقِب طلبات بيانات من واجهة برمجة التطبيقات للتأكّد مما إذا كانت المشكلة لا تزال قائمة.
- يمكنك التواصل مع فريق دعم Apigee وتقديم عمليات تفريغ سلاسل المحادثات ولقطات لأجزاء من الذاكرة وسجلّات معالج الرسائل (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) للمساعدة في التحقيق في سبب ارتفاع معدّل استخدام وحدة المعالجة المركزية (CPU)/الذاكرة.
السبب: تهيئة طبقة مقابس آمنة (SSL) غير صحيحة بين أجهزة التوجيه وأجهزة MP
التشخيص
- تحقَّق من سجلّات NGINX Access (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
). وسيظهر لك الردّ 502 كما هو موضّح أدناه:_access_log
2019-07-23T12:13:42+03:00 sc-10-254-226-23 10.X.X.X:53634 10.X.X.X:8998 0.000 - - 502 502 189 344 GET <path> curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 <host alias> mp-10-254-226-23-23706-8552529-1 10.129.107.101 - - -1 - - dc-2 gateway-2 green - gateway-2 dc-2 op pilot http -
- تحقَّق من سجلات أخطاء NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
). ستظهر لك أخطاء مثل هذه:_error_log
2019/07/30 17:02:24 [error] 7691#7691: *11753633 peer closed connection in SSL handshake while SSL handshaking to upstream, client: X.X.X.X, server: <HostAlias>, request: "GET /no-target HTTP/1.1", upstream: "https://X.X.X.X:8998/no-target", host: "<HostAlias>"
- يوضح ذلك إخفاق تأكيد اتصال طبقة المقابس الآمنة بين جهاز التوجيه ومعالج الرسائل.
- إذا لاحظت بعناية في رسالة الخطأ في الخطوة رقم 1 و2، فإن المنفذ رقم المستخدم للاتصال بمعالج الرسائل هو 8998 وهو منفذ غير آمن ولكن البروتوكول هو طبقة المقابس الآمنة (https). عادةً ما يكون المنفذ الآمن المستخدم هو 8443. نظرًا لاستخدام منفذ غير آمن للاتصال الآمن، فإنه يتسبب في فشل تأكيد اتصال طبقة المقابس الآمنة.
- عادةً ما يحدث ذلك إذا فاتتك أي خطوات أو ضبطت أي قيم غير صحيحة أثناء تهيئة طبقة المقابس الآمنة بين جهاز التوجيه ومعالج الرسائل. يُرجى الرجوع إلى الخطوات الموضّحة هنا.
على سبيل المثال، يمكن أن يحدث هذا الخطأ إذا كانت
- تم تحديد المنفذ رقم 8998 بدلاً من 8443 في
/opt/apigee/customer/application/message-processor.properties as shown below
.conf/message-processor-communication.properties+local.http.port=8998
- لا يتم حذف ملفات إعداد جهاز التوجيه ضمن الدليل
/opt/nginx/conf.d/*
، ولم تتم إعادة تشغيل جهاز التوجيه أثناء ضبط طبقة المقابس الآمنة. في هذا السيناريو، يمكنك ملاحظة أن رقم المنفذ الخاص بمعالجات الرسائل سيبقى 8998 في ملفات التهيئة.
- تم تحديد المنفذ رقم 8998 بدلاً من 8443 في
الدقة
- تأكَّد من اتّباع جميع الخطوات الواردة في ضبط بروتوكول أمان طبقة النقل (TLS) بين جهاز توجيه ومعالج الرسائل بشكل صحيح.
- في حال استمرار المشكلة، انتقِل إلى جمع معلومات التشخيص.
السبب: حدث خطأ من خادم الخلفية
التشخيص
- في حال حدوث الخطأ في كل مرة، يمكنك تسجيل تتبُّع واجهة المستخدم للطلبات التي تعذّر تنفيذها. اختَر طلبًا فاشلاً وتنقَّل خلال مراحل مختلفة في عملية التتبُّع. إذا لاحظتَ الحصول على "502 مدخل غير صالح" من خادم الخلفية نفسه، قد تكون المشكلة ناتجة عن حدوث عطل في خادم الخلفية.
تتبُّع ظهور الرسالة "502 Bad Gateway" الواردة من خادم الخلفية
- إذا كانت المشكلة تحدث بشكل متقطع ويتعذّر عليك تسجيل آثار الأنشطة،
- إذا كنت من مستخدمي Public Cloud، يمكنك استخدام مراقبة واجهة برمجة التطبيقات والاطّلاع على تفاصيل أخطاء 502.
- إذا لاحظت أنّ رمز الخطأ هو
messaging.adaptors.http.flow.ErrorResponseCode
وأنّ مصدر الخطأ هوtarget
، يعني ذلك أنّ خادم الخلفية هو سبب الخطأ.
- إذا لاحظت أنّ رمز الخطأ هو
- إذا كنت أحد مستخدمي سحابة خاصة، يمكنك تحليل سجلات NGINX Access
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
_access_log.
ستظهر لك تفاصيل الطلب الذي تعذّر تطبيقه على النحو التالي:
2017-02-24T14:42:12+00:00 rt-01 192.8.155.2:18118 192.168.84.166:8998 10.225 - - 502 502 440 0 GET /adv-eadlg-test/documents?type=doctype HTTP/1.1 rt-02efawae234-1234 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 myorg-dev.apigee.net rt-02efawae234-1234 6 - false target messaging.adaptors.http.flow.ErrorResponseCode null/null - /organizations/myorg/environments/dev/apiproxies/api123
- إذا لاحظت أنّ رمز الخطأ هو
messaging.adaptors.http.flow.ErrorResponseCode
وأنّ مصدر الخطأ هوtarget
، يعني ذلك أنّ خادم الخلفية هو سبب الخطأ.
- إذا لاحظت أنّ رمز الخطأ هو
- إذا كنت من مستخدمي Public Cloud، يمكنك استخدام مراقبة واجهة برمجة التطبيقات والاطّلاع على تفاصيل أخطاء 502.
الدقة
- يُرجى التعاون مع فريق خادم الخلفية لحلّ هذه المشكلة في الخلفية.
جمع معلومات التشخيص
- سجلّات الوصول إلى NGINX
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)_access_log
وسجلات الأخطاء
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)._error_log - سجلّات معالج الرسائل
(/opt/apigee/var/log/edge-message-processor/logs/system.log
).