يتم الآن عرض مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X. info
الفيديوهات
| فيديو | الوصف |
|---|---|
| 500 Internal Server Error - caused by backend | يوضّح هذا الفيديو خطأً في الخادم الداخلي 500 Internal Server Error يحدث في الوقت الفعلي بسبب خادم الخلفية، بالإضافة إلى خطوات تحديد المشاكل وحلّها. |
المشكلة
يتلقّى تطبيق العميل رمز حالة HTTP بقيمة 500 مع الرسالة
Internal Server Error كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.
رمز حالة HTTP 500 هو استجابة عامة للخطأ. ويعني ذلك أنّ الخادم
واجه حالة غير متوقّعة منعته من تلبية الطلب. يعرض الخادم هذا الخطأ عادةً عندما لا يكون أي رمز خطأ آخر مناسبًا.
رسائل الخطأ
يتلقّى تطبيق العميل رمز الاستجابة التالي:
HTTP/1.1 500 Internal Server Error
بالإضافة إلى ذلك، قد تظهر لك رسالة خطأ مشابهة للرسالة الموضحة أدناه:
مثال 1
Sample Backend Server Response #1
{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}مثال 2
Sample Backend Server Response #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 لعدد من الأسباب. توضّح هذه المسرحية كيفية تحديد المشاكل وحلّها باستخدام خطوات شائعة وحلّ هذا
الخطأ بغض النظر عن سببه.
في ما يلي الأسباب المحتملة لهذه المشكلة:
| السبب | الوصف | تعليمات تحديد المشاكل وحلّها التي تنطبق على |
|---|---|---|
| Error in backend server | قد يتعطّل خادم الخلفية لسبب ما. | مستخدمو Edge Private Cloud وPublic Cloud |
الخطوات الشائعة لتشخيص المشكلة
استخدِم إحدى الأدوات أو التقنيات التالية لتشخيص هذا الخطأ:
API Monitoring
الإجراء 1: استخدام API Monitoring
لتشخيص الخطأ باستخدام API Monitoring:
- سجِّل الدخول إلى واجهة مستخدم Apigee Edge كمستخدم لديه دور مناسب.
انتقِل إلى المؤسسة التي تريد التحقيق في المشكلة فيها.
- انتقِل إلى صفحة Analyze > API Monitoring > Investigate.
- اختَر الإطار الزمني المحدّد الذي لاحظت فيه الأخطاء.
ارسم رمز الخطأ مقابل الوقت.
اختَر خلية تحتوي على رمز الخطأ
messaging.adaptors.http.flow.ErrorResponseCodeكما هو موضّح أدناه:
تظهر معلومات عن رمز الخطأ
messaging.adaptors.http.flow.ErrorResponseCodeكما هو موضّح أدناه:
انقر على عرض السجلّات ووسِّع صف الطلب الذي تعذّر تنفيذه.
- من نافذة السجلّات ، اكتب التفاصيل التالية:
- معرّف رسالة الطلب
- رمز الحالة:
500 - مصدر الخطأ:
target - رمز الخطأ:
messaging.adaptors.http.flow.ErrorResponseCode
التتبّع
الإجراء 2: استخدام أداة التتبّع
لتشخيص الخطأ باستخدام أداة التتبّع:
- فعِّل جلسة التتبّع وقم بأحد الإجراءَين التاليَين:
- انتظِر ظهور الخطأ
500 Internal Server Errorمع رمز الخطأmessaging.adaptors.http.flow.ErrorResponseCode، أو - إذا كان بإمكانك إعادة إظهار المشكلة، نفِّذ طلب البيانات من واجهة برمجة التطبيقات لإعادة إظهار الخطأ
500 Internal Server Error
- انتظِر ظهور الخطأ
تأكَّد من تفعيل الخيار Show all FlowInfos:

- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص التتبّع.
- انتقِل خلال المراحل المختلفة من التتبّع وحدِّد مكان حدوث الخطأ.
ستجد الخطأ عادةً في مسار بعد مرحلة Response received from target server كما هو موضّح أدناه:

- انتقِل إلى مرحلة AX (تم تسجيل بيانات "إحصاءات Google") في التتبّع وانقر عليها.
انتقِل للأسفل إلى قسم Phase Details Response Headers وحدِّد قيم X-Apigee-fault-code وX-Apigee-fault-source وX-Apigee-Message-ID كما هو موضّح أدناه:

- لاحظ قيم X-Apigee-fault-code وX-Apigee-fault-source وX-Apigee-Message-ID:
| عناوين الاستجابة | القيمة |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
الإجراء 3: استخدام سجلّات الوصول إلى NGINX
لتشخيص الخطأ باستخدام سجلّات الوصول إلى NGINX:
- إذا كنت مستخدمًا في Private Cloud، يمكنك استخدام سجلّات الوصول إلى NGINX لتحديد
المعلومات الرئيسية حول الخطأ
500 Internal Server Errorفي HTTP. راجِع سجلّات الوصول إلى NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- ابحث لمعرفة ما إذا كانت هناك أي أخطاء
500مع رمز الخطأmessaging.adaptors.http.flow.ErrorResponseCodeخلال مدة معيّنة (إذا حدثت المشكلة في الماضي) أو إذا كانت هناك أي طلبات لا تزال تتعذّر مع الخطأ500. إذا عثرت على أي أخطاء
500مع X-Apigee-fault-code الذي يطابق قيمةmessaging.adaptors.http.flow.ErrorResponseCode، حدِّد قيمة X-Apigee-fault-source.Sample 500 error from NGINX access log:
يحتوي الإدخال النموذجي أعلاه من سجلّ الوصول إلى NGINX على القيم التالية لـ X-Apigee-fault-code و X-Apigee-fault-source:
العناوين القيمة X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
السبب: Error in backend server
التشخيص
يمكن أن يحدث الخطأ 500 Internal Server Error الذي يعرضه خادم الخلفية لعدد من الأسباب. عليك تشخيص كل حالة على حدة.
- حدِّد رمز الخطأ ومصدر الخطأ للخطأ الذي تم رصده باستخدام API Monitoring أو أداة التتبّع أو سجلّات الوصول إلى NGINX كما هو موضّح في الخطوات الشائعة لتشخيص المشكلة.
- إذا كان مصدر الخطأ هو
targetورمز الخطأ هوmessaging.adaptors.http.flow.ErrorResponseCode، يشير ذلك إلى أنّ خادم الخلفية هو الذي يعرض الخطأ. - يمكنك استخدام إحدى الخطوات التالية لتشخيص سبب المشكلة:
التتبّع
Using Trace:
إذا كانت لديك جلسة تتبّع للخطأ، اتّبِع الخطوات التالية:
- في التتبّع، اختَر طلب البيانات من واجهة برمجة التطبيقات الذي تعذّر تنفيذه بسبب الخطأ
500 Internal Server Error. اختَر مرحلة Response received from target server من طلب البيانات من واجهة برمجة التطبيقات الذي تعذّر تنفيذه كما هو موضّح في الشكل أدناه:
انتقِل للأسفل إلى قسم Phase Details واطّلِع على Response Content, الذي يحتوي على الاستجابة من خادم الخلفية.
Sample Response Content:
<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>
في الاستجابة أعلاه، لاحظ أنّ رسالة الخطأ من خادم الخلفية هي Not Authorised. يشير ذلك إلى أنّ المستخدم ربما قدّم بيانات اعتماد غير صالحة ولهذا السبب يظهر له هذا الخطأ.
Call backend server
Making direct call to backend server:
يمكنك إجراء مكالمة مباشرة مع خادم الخلفية وتنفيذ ما يلي:
- التحقّق مما إذا كنت تتلقّى الاستجابة نفسها
500 Internal Server Errorالتي تم تلقّيها عند إجراء الطلب من خلال Apigee Edge - الاطّلاع على رسالة الخطأ (الاستجابة) التي تم تلقّيها من خادم الخلفية
اتّبِع الخطوات التالية لإجراء المكالمة المباشرة مع خادم الخلفية:
- تأكَّد من أنّ لديك جميع العناوين المطلوبة ومَعلمات طلب البحث وأي بيانات اعتماد يجب تمريرها إلى خادم الخلفية كجزء من الطلب.
- إذا كانت خدمة الخلفية متاحة للجميع، يمكنك استخدام الـ
curlcommand، أو Postman، أو أي عميل REST آخر واستدعاء الـ واجهة برمجة التطبيقات لخادم الخلفية مباشرةً. إذا كان خادم الخلفية لا يمكن الوصول إليه إلا من "معالِجات الرسائل"، يمكنك استخدام الأمر
curlأو Postman أو أي عميل REST آخر واستدعاء واجهة برمجة التطبيقات لخادم الخلفية مباشرةً من "معالِج الرسائل".- تأكَّد مما إذا كانت خدمة الخلفية تعرض بالفعل الخطأ
500 Internal Server Errorواطّلِع على رسالة الخطأ (الاستجابة) التي يعرضها خادم الخلفية وحدِّد سبب هذا الخطأ.
Backend server logs
Using backend server logs
- راجِع سجلّات خادم الخلفية وحاوِل الحصول على مزيد من التفاصيل حول الخطأ و سببه.
- إذا أمكن، فعِّل وضع تصحيح الأخطاء على خادم الخلفية للحصول على مزيد من التفاصيل حول الخطأ وسببه.
- في التتبّع، اختَر طلب البيانات من واجهة برمجة التطبيقات الذي تعذّر تنفيذه بسبب الخطأ
تحقَّق مما إذا كنت تستخدم ربط الخادم الوكيل في نقطة النهاية المستهدَفة المحدّدة للخادم الوكيل لواجهة برمجة التطبيقات الذي تعذّر تنفيذه، أي إذا كان الخادم المستهدَف أو نقطة النهاية المستهدَفة يستدعيان خادمًا وكيلاً آخر في Apigee Edge. لتحديد ذلك:
إذا كان لديك التتبّع للطلب الذي تعذّر تنفيذه، انتقِل إلى مرحلة Request sent to target server وانقر على Show Curl.
- تُفتح نافذة Curl for Request Sent to Target Server التي يمكنك من خلالها تحديد الاسم المستعار لمضيف الخادم المستهدَف.
- راجِع نقطة النهاية المستهدَفة للخادم الوكيل لواجهة برمجة التطبيقات وتحقَّق مما إذا كان عنوان URL لخادم الخلفية أو اسم المضيف في الخادم المستهدَف يشير إلى خادم وكيل آخر أو إلى خادم الخلفية الخاص بك.
- إذا كان الاسم المستعار لمضيف الخادم المستهدَف يشير إلى اسم مستعار لمضيف افتراضي، يكون ذلك
ربطًا للخادم الوكيل. في هذه الحالة، عليك تكرار جميع الخطوات أعلاه للخادم الوكيل المرتبط إلى أن تحدِّد سبب الخطأ
500 Internal Server Error. في هذه الحالات، قد يحدث الخطأ500 Internal Server Errorفي خوادم وكيلة أخرى مرتبطة في مراحل أخرى أيضًا، ويمكن تشخيص هذه الحالات وحلّها باستخدام التعليمات الواردة في هذه المسرحية أو في 500 Internal Server Error playbook. - إذا كان الاسم المستعار لمضيف الخادم المستهدَف يشير إلى خادم الخلفية، انتقِل إلى الدقة.
الدقة
إذا تبيّن أنّ الخطأ 500 وارد من خادم الخلفية، تعاون مع فريق خادم الخلفية لحلّ المشكلة بشكلٍ مناسب.
في المثال الذي تمت مناقشته أعلاه، قد تحتاج إلى أن تطلب من المستخدمين تمرير بيانات اعتماد صالحة لحلّ هذه المشكلة.
يُرجى مراعاة النقاط الرئيسية التالية:
- لا يمكن الاطّلاع على رسالة الخطأ الفعلية التي يعرضها خادم الخلفية للخطأ
500 Internal Server Errorإلا إذا سجّلت جلسة التتبّع للطلبات التي تعذّر تنفيذها. - لن يتم تسجيل استجابة خادم الخلفية في API Monitoring أو سجلّات الوصول إلى NGINX أو سجلّات "معالِج الرسائل" لأسباب أمنية.
- يمكنك مراجعة سجلّات خادم الخلفية أو تفعيل وضع تصحيح الأخطاء على خادم الخلفية للحصول على مزيد من
التفاصيل حول الـ
500 Internal Server Errorو/أو الاطّلاع على رسالة الخطأ التي يعرضها خادم الخلفية.
Must gather diagnostic information
إذا استمرت المشكلة حتى بعد اتّباع التعليمات أعلاه، اجمع معلومات التشخيص التالية وتواصَل مع فريق دعم Apigee Edge.
إذا كنت مستخدمًا في Public Cloud، قدِّم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- الأمر
curlالكامل لإعادة إظهار الخطأ500 - ملف التتبّع الذي يحتوي على الطلبات التي تتضمّن الخطأ
500 Internal Server Error - إذا لم تكن أخطاء
500تحدث حاليًا، قدِّم الفترة الزمنية مع معلومات المنطقة الزمنية التي حدثت فيها أخطاء500في الماضي.
إذا كنت مستخدمًا في Private Cloud ، قدِّم المعلومات التالية:
- رسالة الخطأ الكاملة التي تظهر للطلبات التي تعذّر تنفيذها
- اسم المؤسسة واسم البيئة واسم الخادم الوكيل لواجهة برمجة التطبيقات التي تظهر لك فيها أخطاء
500 - حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- ملف التتبّع الذي يحتوي على الطلبات التي تتضمّن الخطأ
500 Internal Server Error - سجلّات الوصول إلى NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logWhere: يتم استبدال ORG وENV وPORT# بالقيم الفعلية.
- سجلّات نظام "معالِج الرسائل"
/opt/apigee/var/log/edge-message-processor/logs/system.log - الفترة الزمنية مع معلومات المنطقة الزمنية التي حدثت فيها أخطاء
500