أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
الفيديوهات
يمكنك الاطّلاع على الفيديوهات التالية للحصول على مزيد من المعلومات حول أخطاء 503:
| فيديو | الوصف |
|---|---|
| تحديد وحلّ الخطأ "503: الخدمة غير متاحة" بسبب مشكلة في نظام أسماء النطاقات | يمكنك الاطّلاع على المعلومات التالية:
|
| تحديد وحلّ الخطأ 503 "الخدمة غير متاحة" بسبب مشكلة في الشبكة | تحديد المشاكل وحلّها في الخطأ 503 Service Unavailable في الوقت الفعلي الناتج عن مشكلة في الشبكة في Apigee Edge |
المشكلة
يتلقّى تطبيق العميل رمز حالة استجابة HTTP 503 مع الرسالة الخدمة غير متاحة بعد طلب بيانات من خادم وكيل لواجهة برمجة التطبيقات.
رسائل الخطأ
قد تظهر لك رسالة الخطأ التالية:
HTTP/1.1 503 Service Unavailable
يمكنك أيضًا الاطّلاع على رسالة الخطأ التالية في استجابة HTTP:
الخدمة غير متاحة
{
"fault": {
"faultstring": "The Service is temporarily unavailable",
"detail": {
"errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
}
}
}
الأسباب المحتملة
يحدث خطأ استجابة HTTP 503 Service Unavailable مع رمز الخطأ messaging.adaptors.http.flow.ServiceUnavailable
إذا واجهت "معالجة الرسائل" في Apigee Edge أخطاءً بسبب انتهاء مهلة الاتصال أو
اسم المضيف غير الصحيح أو أخطاء مصافحة SSL أثناء التواصل مع خادم الخلفية.
في ما يلي الأسباب المحتملة لظهور الرد 503 الخدمة غير متاحة:
| السبب | الوصف | مَن يمكنه اتّباع خطوات تحديد المشاكل وحلّها؟ |
|---|---|---|
| أخطاء الاتصال بسبب تعذُّر التحويل باستخدام نظام أسماء النطاقات (DNS) | أدّى التحويل باستخدام نظام أسماء النطاقات (DNS) للخادم المستهدف إلى عناوين IP خاطئة أدّت إلى حدوث أخطاء في الاتصال. | مستخدمو Edge Private Cloud |
| أخطاء الاتصال | تمنع مشاكل الشبكة أو الاتصال العميل من الاتصال بالخادم. | مستخدمو Edge Private Cloud |
| اسم مضيف الخادم المستهدف غير صحيح | اسم مضيف الخادم المستهدف الذي تم تحديده غير صحيح أو يحتوي على أحرف غير مرغوب فيها (مثل مسافة). | مستخدمو Edge Public Cloud وEdge Private Cloud |
| أخطاء تأكيد الاتصال عبر طبقة المقابس الآمنة | تعذّر تأكيد الاتصال عبر بروتوكول أمان طبقة النقل/طبقة المقابس الآمنة بين العميل والخادم. (يتم تناول تحديد المشاكل وحلّها في هذه الفئة في موضوع منفصل). | مستخدمو Edge Public Cloud وEdge Private Cloud |
خطوات التشخيص الشائعة
تحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه
أداة التتبُّع
لتحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه باستخدام "أداة التتبُّع"، اتّبِع الخطوات التالية:
- إذا كانت المشكلة لا تزال نشطة، فعِّل جلسة التتبُّع لواجهة برمجة التطبيقات المتأثرة.
- إجراء طلب البيانات من واجهة برمجة التطبيقات وإعادة إنتاج المشكلة: 503 Service Unavailable مع رمز الخطأ
messaging.adaptors.http.flow.ServiceUnavailable. - اختَر أحد الطلبات التي تعذّر تنفيذها.
- انتقِل إلى مرحلة AX، وحدِّد رقم تعريف الرسالة (
X-Apigee.Message-ID) للطلب من خلال الانتقال للأسفل في قسم تفاصيل المرحلة كما هو موضّح في الشكل التالي.
سجلّات الوصول إلى NGINX
لتحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه باستخدام سجلات الوصول إلى NGINX، اتّبِع الخطوات التالية:
يمكنك أيضًا الرجوع إلى سجلّات الوصول إلى NGINX لتحديد رقم تعريف الرسالة للأخطاء 503. ويكون ذلك مفيدًا بشكل خاص إذا حدثت المشكلة في الماضي أو إذا كانت متقطّعة ولم تتمكّن من تسجيل التتبُّع في واجهة المستخدم. اتّبِع الخطوات التالية لتحديد هذه المعلومات من سجلّات الوصول إلى NGINX:
- تحقَّق من سجلّات الوصول إلى NGINX: (
/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log) - ابحث عمّا إذا كانت هناك أي أخطاء 503 في خادم وكيل واجهة برمجة التطبيقات المحدّد خلال مدة زمنية معيّنة (إذا حدثت المشكلة في الماضي) أو إذا كانت هناك أي طلبات لا تزال تتلقّى الرمز 503.
- إذا كانت هناك أي أخطاء 503 مع X-Apigee-fault-code messaging.adaptors.http.flow.ServiceUnavailable،
دوِّن رقم تعريف الرسالة لطلب واحد أو أكثر من هذه الطلبات كما هو موضّح في المثال التالي:
نموذج إدخال يعرض الخطأ 503
أخطاء الاتصال بسبب تعذُّر التحويل باستخدام نظام أسماء النطاقات (DNS)
التشخيص
- تحديد رقم تعريف الرسالة التي تعذّر إرسالها
- ابحث عن معرّف رسالة الطلب المحدّد في سجلّ "معالج الرسائل" (
/opt/apigee/var/log/edge-message-processor/logs/system.log). قد تلاحظ الأخطاء التالية:
يشير الخطأ onConnectTimeout إلى تعذّر اتصال "معالج الرسائل" بخادم الخلفية خلال فترة مهلة الاتصال المحدّدة مسبقًا (القيمة التلقائية: 3 ثوانٍ).2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11 resolvedAddress=www.abc.com/22.22.22.22 2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
- دوِّن عنوان IP الذي تمّ حله في الخطأ onConnectTimeout وتحقّق مما إذا كان عنوان IP صالحًا لخادم الخلفية. إذا كان عنوان IP صالحًا، انتقِل إلى أخطاء الاتصال.
- إذا كان عنوان IP غير صالح، فمن المحتمل أن يكون السبب هو مشاكل في التحويل باستخدام نظام أسماء النطاقات (DNS).
- كرِّر الخطوتَين 3 و4 لبعض الطلبات الأخرى من خلال واجهة برمجة التطبيقات التي تعذّر تنفيذها، وتحقَّق مما إذا كنت ترى عناوين IP غير صالحة نفسها أو أي عناوين أخرى.
- ابحث في سجلّ "معالج الرسائل" (
/opt/apigee/var/log/edge-message-processor/logs/system.log) عن الرسائل التي تتضمّن الكلمة الرئيسية تحديث نظام أسماء النطاقات. تحقَّق مما إذا كانت عناوين IP غير صالحة أو سيئة تتم إضافتها إلى ذاكرة التخزين المؤقت لنظام أسماء النطاقات على "معالج الرسائل" من حين لآخر.2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
- يمكن أن تحدث هذه المشكلة إذا كانت هناك أي مشاكل في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء التي تم ضبطها في
/etc/resolv.conf.
في العادة، يمكن ضبط خادم واحد أو أكثر من خوادم نظام أسماء النطاقات الموثوقة لإجراء عملية التحويل باستخدام نظام أسماء النطاقات. في حال عدم توفّر خوادم نظام أسماء نطاقات موثوقة، سيتم الرجوع إلى إعدادات الضبط في/etc/resolv.confوإجراء عملية التحويل باستخدام نظام أسماء النطاقات على النحو المناسب. على سبيل المثال: إذا تم ضبط/etc/resolv.confعلى استخدام خوادم أسماء محدّدة، سيتم استخدام خوادم الأسماء هذه لتنفيذ عملية التحويل باستخدام نظام أسماء النطاقات (DNS). - إذا كانت هناك أي مشاكل في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدّدة في
/etc/resolv.conf، سيتم تحويل أسماء مضيفي خادم الخلفية إلى عناوين IP غير صالحة. سيتم بعد ذلك تخزين عناوين IP غير الصالحة في ذاكرة التخزين المؤقت لنظام أسماء النطاقات (DNS) في "معالج الرسائل".- إذا استمرت المشكلة في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدّدة في
/etc/resolv.conf، ستظل عناوين IP غير الصالحة أو السيئة في ذاكرة التخزين المؤقت لنظام أسماء النطاقات في "معالج الرسائل". ما دام يتم تخزين عناوين IP غير الصالحة في ذاكرة التخزين المؤقتة لنظام DNS في "معالج الرسائل"، ستتعذّر الطلبات لجميع واجهات برمجة التطبيقات هذه التي تستخدم خادم الخلفية المحدّد مع ظهور الخطأ 503. - إذا كانت المشكلة في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدّدة في
/etc/resolv.confمتقطّعة، سيتم تخزين عناوين IP الجيدة والسيئة بشكل متقطّع في ذاكرة التخزين المؤقت لنظام أسماء النطاقات. في هذه الحالة، ستظهر لك أخطاء 503 بشكل متقطع لجميع واجهات برمجة التطبيقات التي تستخدم خادم الخلفية المحدّد.
- إذا استمرت المشكلة في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدّدة في
- إذا كانت المشكلة في خوادم نظام أسماء النطاقات مستمرة، ستظهر لك حالات تعذُّر متواصلة. إذا كانت المشكلة في خوادم نظام أسماء النطاقات متقطّعة، ستظهر لك حالات تعذُّر متقطّعة. وهذا يعني أنّه كلما تمّت مطابقة اسم مضيف خادم الخلفية مع عناوين IP غير صالحة، ستظهر لك أخطاء 503. وعندما يتم تحويل أسماء مضيفي خادم الخلفية إلى عناوين IP صالحة، ستلاحظ استلام ردود ناجحة.
الدقة
يُرجى التواصل مع مسؤول نظام التشغيل وحلّ المشاكل في خوادم نظام أسماء النطاقات.
- إذا كانت هناك مشكلة في خوادم نظام أسماء النطاقات المعتمدة أو خوادم الأسماء المحدّدة في
/etc/resolv.conf، عليك حلّ المشكلة في الخادم المناسب. - إذا كانت هناك أي مشكلة في الإعدادات في
/etc/resolv.confعلى الأنظمة التي تتضمّن "معالجات الرسائل"، عليك إصلاح مشكلة الإعدادات.
أخطاء في الربط
يحدث خطأ في الاتصال عندما يحاول معالج رسائل Apigee Edge الاتصال بخادم الخلفية ويحدث أحد المشاكل التالية:
- يتعذّر على "معالج الرسائل" الاتصال خلال فترة المهلة المحدّدة مسبقًا. (القيمة التلقائية: 3 ثوانٍ)
- يرفض خادم الخلفية الاتصال.
التشخيص
- تحديد رقم تعريف الرسالة التي تعذّر إرسالها
-
ابحث عن معرّف رسالة الطلب المحدّد في سجلّ "معالج الرسائل" (
/opt/apigee/var/log/edge-message-processor/logs/system.log). قد تلاحظ الأخطاء التالية:-
يشير الخطأ onConnectTimeout إلى أنّ "معالج الرسائل" تعذّر عليه الاتصال بخادم الخلفية خلال فترة مهلة الاتصال المحدّدة مسبقًا.
2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11 2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
-
يشير الخطأ java.net.ConnectException: Connection refused إلى أنّ الخادم الخلفي رفض الاتصال.
14:40:16.531 +0530 2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {} java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75] at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75] at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na] at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
-
يشير الخطأ onConnectTimeout إلى أنّ "معالج الرسائل" تعذّر عليه الاتصال بخادم الخلفية خلال فترة مهلة الاتصال المحدّدة مسبقًا.
- تحقَّق مما إذا كان بإمكانك الاتصال بخادم الخلفية المحدّد مباشرةً من كل معالجات الرسائل باستخدام الأمر
telnet:- إذا كان خادم الخلفية يحلّ إلى عنوان IP واحد، استخدِم الأمر التالي:
telnet BackendServer-IPaddress 443 - إذا كان خادم الخلفية يحلّ إلى عناوين IP متعددة، استخدِم اسم المضيف الخاص بخادم الخلفية في الأمر
telnetكما هو موضّح أدناه:telnet BackendServer-HostName 443
- إذا كان خادم الخلفية يحلّ إلى عنوان IP واحد، استخدِم الأمر التالي:
- إذا كان بإمكانك الاتصال بخادم الخلفية، قد تظهر لك رسالة مثل
Connected to backend-server. إذا تعذّر عليك الاتصال بخادم الخلفية، قد يكون ذلك بسبب عدم إضافة عناوين IP الخاصة بـ "معالجات الرسائل" إلى القائمة المسموح بها على خادم الخلفية المحدّد.
الدقة
امنح إذن الوصول إلى عناوين IP الخاصة بـ "معالج الرسائل" على خادم الخلفية المحدّد للسماح لحركة البيانات من "معالجات الرسائل" في Edge بالوصول إلى خادم الخلفية. على سبيل المثال، في نظام التشغيل Linux، يمكنك استخدام iptables للسماح بزيارات من عناوين IP الخاصة بـ "معالج الرسائل" على خادم الخلفية.
في حال استمرار المشكلة، يُرجى التواصل مع مشرف الشبكة لتحديد المشكلة وحلّها. إذا كنت بحاجة إلى أي مساعدة إضافية من Apigee، يُرجى التواصل مع فريق الدعم في Apigee.
اسم المضيف لخادم الاستهداف غير صحيح
التشخيص
إذا كان اسم المضيف المحدّد في الخادم المستهدف غير صحيح، قد تتلقّى الاستجابة 503 Service Unavailable مع رمز الخطأ
messaging.adaptors.http.flow.ServiceUnavailable.
أداة التتبُّع
لإجراء التشخيص باستخدام أداة "التتبُّع"، اتّبِع الخطوات التالية:
- إذا كانت المشكلة لا تزال نشطة، فعِّل جلسة التتبُّع لواجهة برمجة التطبيقات المتأثرة.
- إجراء طلب البيانات من واجهة برمجة التطبيقات وإعادة إنتاج المشكلة: 503 Service Unavailable مع رمز الخطأ
messaging.adaptors.http.flow.ServiceUnavailable. - اختَر أحد الطلبات التي تعذّر تنفيذها.
- تنقَّل بين مراحل التتبُّع المختلفة وحدِّد مكان حدوث الخطأ.
- اختَر FlowInfo الذي يحتوي على الخطأ. يمكنك العثور على مزيد من المعلومات في حقل error.cause الذي يمكن أن يوضّح لك سبب الخطأ كما هو موضّح في المثال التالي:
نموذج طلب يعرض سبب الخطأ في التتبُّع

- إذا لاحظت أنّ error.cause يعرض Host not reachable (تعذّر الوصول إلى المضيف)، من المحتمل أن يكون سبب الخطأ أحد الأسباب التالية:
- اسم المضيف المحدّد في إعداد الخادم المستهدف/نقطة النهاية المستهدفة غير صحيح أو يحتوي على مسافة أو رموز خاصة غير مرغوب فيها.
على سبيل المثال، هناك مسافة غير مرغوب فيها في اسم المضيف كما هو موضّح أدناه:
"demo-target.apigee.net " - اسم المضيف الذي تم استبداله بالمتغيّر target.url في خادم وكيل واجهة برمجة التطبيقات باستخدام السياسة AssignMessage أو JavaScript غير صحيح أو يتضمّن مسافة أو أي رموز خاصة أخرى غير مرغوب فيها.
- اسم المضيف المحدّد في إعداد الخادم المستهدف/نقطة النهاية المستهدفة غير صحيح أو يحتوي على مسافة أو رموز خاصة غير مرغوب فيها.
- تحقَّق من إعداد نقطة النهاية المستهدَفة و/أو تعريف الخادم المستهدَف لمعرفة ما إذا كان اسم مضيف الخادم المستهدَف غير صحيح أو يتضمّن أي مسافات أو أحرف خاصة غير مرغوب فيها.
- إذا تم إنشاء مضيف الخادم المستهدف بشكل ديناميكي، تحقَّق من السياسة المناسبة (سياسة AssignMessage/JavaScript، على سبيل المثال) المستخدَمة لإنشائه. تحقَّق مما إذا كان اسم مضيف الخادم المستهدف غير صحيح أو يحتوي على أي مسافة أو أحرف خاصة غير مرغوب فيها.
- بعد تحديد اسم مضيف الخادم المستهدف، شغِّل الأمر
nslookup/digعلى اسم المضيف لمعرفة ما إذا كان يمكن حله.على سبيل المثال، يؤدي تنفيذ الأمر
nslookupعلى اسم المضيف الذي يتضمّن مسافة غير مرغوب فيها إلى عرض النتيجة التالية:nslookup "demo-target.apigee.net " Server: 49.205.75.2 Address: 49.205.75.2#53 ** server can't find demo-target.apigee.net\032: NXDOMAIN
- إذا تعذّر أيضًا على أمر نظام التشغيل
nslookupحلّ اسم المضيف، يكون سبب هذه المشكلة هو اسم المضيف غير الصحيح المستخدَم للخادم المستهدف.انتقِل إلى درجة الدقة.
سجلّات معالج الرسائل
لتشخيص المشاكل باستخدام سجلات معالج الرسائل، اتّبِع الخطوات التالية:
- تحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه
- ابحث عن معرّف الرسالة في سجلّ "معالج الرسائل". (
/opt/apigee/var/log/edge-message-processor/logs/system.log) - إذا ظهرت لك رسائل التحذير أو الخطأ التالية، يعني ذلك أنّ "معالج الرسائل" لم يتمكّن من تحديد اسم المضيف. بما أنّه سيتم تأجيل الرسالة، قد لا يظهر لك تحذير بشأن جميع معرّفات الرسائل/الطلبات.
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
- سيتبع ذلك رسالة تحذير، حيث يزيل "معالج الرسائل" العنوان من ذاكرة التخزين المؤقت لنظام أسماء النطاقات، لأنّه تعذّر الوصول إلى مضيف الخادم المستهدف.
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
- قد تظهر لك بعد ذلك رسالة تفيد بتعذُّر عمل "معالج الرسائل" بسبب الخطأ "لا يمكن الوصول إلى المضيف". وفي بعض الأحيان، يظهر اسم المضيف كجزء من رسالة الخطأ:
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to demo-target.apigee.net failed with exception {} java.lang.RuntimeException: Host not reachable at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704) at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675) at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234) …<snipped>
- في بعض الأحيان، قد يظهر على أنّه null لأنّه لا يمكن مطابقة اسم المضيف أو الوصول إليه كما هو موضّح أدناه:
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to null failed with exception {} java.lang.RuntimeException: Host not reachable at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704) at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675) at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234) …<snipped>
- يحدث الخطأ
Host not reachableعادةً في إحدى الحالات التالية:- اسم المضيف المحدّد في إعداد الخادم المستهدف/نقطة النهاية المستهدفة غير صحيح أو يحتوي على مسافة أو رموز خاصة غير مرغوب فيها.
على سبيل المثال، هناك مسافة غير مرغوب فيها في اسم المضيف "demo-target.apigee.net " في رسالة الخطأ التالية:NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to demo-target.apigee.net failed with exception
- اسم المضيف الذي تم استبداله بالمتغير target.url في خادم وكيل واجهة برمجة التطبيقات باستخدام السياسة AssignMessage أو JavaScript غير صحيح أو يحتوي على مسافة أو أي رموز خاصة أخرى غير مرغوب فيها.
- اسم المضيف المحدّد في إعداد الخادم المستهدف/نقطة النهاية المستهدفة غير صحيح أو يحتوي على مسافة أو رموز خاصة غير مرغوب فيها.
- حدِّد اسم مضيف الخادم المستهدف الذي يحاول "معالج الرسائل" التواصل معه باستخدام أحد الخيارات التالية:
- افحص رسالة الخطأ التي تحتوي على
Host not reachableبعناية. - إذا كانت رسالة الخطأ تعرض اسم المضيف، انسخ اسم المضيف بما في ذلك أي مسافات أو أي رموز خاصة.
- إذا كانت رسالة الخطأ تعرض القيمة null لاسم المضيف كما هو موضّح في رسالة الخطأ التالية،
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to null failed with exception {}
- حدِّد اسم المضيف من خلال التحقّق من تعريف الخادم المستهدَف المستخدَم في خادم وكيل واجهة برمجة التطبيقات الذي تعذّر تنفيذه.
- إذا تم إنشاء مضيف الخادم المستهدف بشكلٍ ديناميكي، تحقَّق من السياسة المناسبة (على سبيل المثال، سياسة AssignMessage/JavaScript) المستخدَمة لإنشائه.
- بعد تحديد اسم مضيف الخادم المستهدف، شغِّل الأمر nslookup/dig على اسم المضيف وتحقّق مما إذا كان يمكن حله.
على سبيل المثال، شغِّل الأمر nslookup على اسم المضيف الذي يتضمّن مسافة
nslookup "demo-target.apigee.net " Server: 49.205.75.2 Address: 49.205.75.2#53 ** server can't find demo-target.apigee.net\032: NXDOMAIN - إذا تعذّر على أمر نظام التشغيل nslookup أيضًا حلّ اسم المضيف، يكون سبب هذه المشكلة هو اسم المضيف غير الصحيح المستخدَم للخادم المستهدف.
الدقة
- تأكَّد من أنّ اسم مضيف الخادم المستهدف المحدّد في إعداد نقطة النهاية المستهدفة أو في تعريف الخادم المستهدف صحيح ولا يتضمّن أي مسافات أو رموز خاصة غير مرغوب فيها.
- إذا كنت تستخدم أي سياسة AssignMessage/JavaScript لإنشاء اسم مضيف الخادم المستهدف بشكل ديناميكي، عليك التحقّق من تعريف السياسة والرمز البرمجي والتأكّد من إنشاء اسم مضيف الخادم المستهدف بشكل صحيح.
أخطاء تأكيد الاتصال عبر طبقة المقابس الآمنة
تم تخصيص دليل كامل لتحديد المشاكل وحلّها لأخطاء تأكيد الاتصال عبر طبقة النقل الآمنة (TLS)/طبقة المقابس الآمنة (SSL). يُرجى الاطّلاع على أخطاء تأكيد الاتصال عبر طبقة المقابس الآمنة.
تحديد مصدر المشكلة
يمكن أن تحدث أنواع معيّنة من الأخطاء في الاتصال الوارد (شمالي) أو الصادر (جنوبي). يحدث خطأ وارد (في اتجاه الشمال) بين تطبيق العميل وEdge. يحدث خطأ صادر (متّجه جنوبًا) بين Edge وخادم الخلفية المستهدف. لتشخيص هذه الأنواع من المشاكل، يجب أولاً تحديد ما إذا كان الخطأ يحدث في الاتصال الصادر أو الوارد.
فهم الاتصالات المتجهة شمالاً وجنوبًا
في Edge، قد يظهر الخطأ 503 Service Unavailable (الخدمة غير متاحة) في الاتصال الوارد أو الصادر:
- الاتصال الوارد (أو الاتصال المتجه شمالاً): هو الاتصال بين تطبيق العميل وEdge Router. الموجّه هو أحد مكوّنات Apigee Edge الذي يتعامل مع الطلبات الواردة إلى النظام.
- الاتصال الصادر (أو الاتصال المتجه جنوبًا): هو الاتصال بين معالج رسائل Edge وخادم الخلفية. معالج الرسائل هو أحد مكونات Apigee Edge التي تعمل كخادم وكيل لطلبات البيانات من واجهة برمجة التطبيقات إلى خوادم الخلفية المستهدَفة.
إذا كنت من مستخدمي Edge Public Cloud، من المحتمل أنّك لا تعرف المكوّنات الداخلية، مثل جهاز التوجيه أو معالج الرسائل. لا يمكن لمستخدمي السحابة الإلكترونية العامة الاطّلاع على هذه المكوّنات الداخلية أو الوصول إليها. ونوفّر، حيثما أمكن، طرقًا بديلة للتحقيق في المشكلة لا تتطلّب الوصول المباشر إلى هذه المكوّنات.
يوضّح الشكل التالي الاتصالات المتجهة شمالاً وجنوبًا في Apigee Edge.

تحديد مكان حدوث الخطأ "503: الخدمة غير متاحة"
اتّبِع إحدى الخطوتَين التاليتَين لتحديد ما إذا حدث الخطأ 503 Service Unavailable في الاتصال الصادر أو الوارد.
سجلّ تتبُّع واجهة المستخدم
لتحديد مكان حدوث الخطأ باستخدام "تتبُّع واجهة المستخدم"، اتّبِع الخطوات التالية:
- إذا كانت المشكلة لا تزال نشطة، فعِّل تتبُّع واجهة المستخدم لواجهة برمجة التطبيقات المتأثرة.
- إذا كان تتبُّع واجهة المستخدم لطلب بيانات من واجهة برمجة التطبيقات الذي تعذّر تنفيذه يشير إلى حدوث الخطأ 503 Service Unavailable أثناء مسار الطلب المستهدف أو أنّه تم إرساله من خادم الخلفية، تكون المشكلة متجهة إلى الجنوب (أي بين "معالج الرسائل" وخادم الخلفية).
- إذا لم يتم الحصول على تتبُّع لطلب بيانات من واجهة برمجة التطبيقات المحدّدة، تكون المشكلة في اتجاه الشمال، أي بين تطبيق العميل والموجّه.
رصد واجهة برمجة التطبيقات
تتيح لك ميزة مراقبة واجهة برمجة التطبيقات عزل مناطق المشاكل بسرعة لتشخيص الأخطاء ومشاكل الأداء ووقت الاستجابة ومصدرها، مثل تطبيقات المطوّرين أو خوادم وكيل واجهة برمجة التطبيقات أو خوادم الخلفية المستهدَفة أو منصة واجهة برمجة التطبيقات.
تتبُّع سيناريو نموذجي يوضّح كيفية تحديد المشاكل من فئة 5xx في واجهات برمجة التطبيقات وحلّها باستخدام "مراقبة واجهة برمجة التطبيقات"
على سبيل المثال، قد تحتاج إلى إعداد تنبيه ليتم إعلامك عندما يتجاوز عدد messaging.adaptors.http.flow.ServiceUnavailable الأخطاء حدًا معيّنًا.
سجلّات الوصول إلى NGINX
لتحديد مكان حدوث الخطأ باستخدام "تتبُّع واجهة المستخدم"، اتّبِع الخطوات التالية:
إذا حدثت المشكلة في الماضي أو كانت متقطّعة ولم تتمكّن من تسجيل التتبُّع، اتّبِع الخطوات التالية:
- راجِع سجلّات الوصول إلى NGINX (
/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log). - ابحث عمّا إذا كانت هناك أي أخطاء 503 لوكيل API محدّد.
- إذا تمكّنت من تحديد أي أخطاء 503 لواجهة برمجة التطبيقات المحدّدة في وقت معيّن، يعني ذلك أنّ المشكلة حدثت في اتصال الجهة الجنوبية (بين "معالج الرسائل" وخادم الخلفية).
- إذا لم يكن الأمر كذلك، يعني ذلك أنّ المشكلة حدثت في الاتصال الصاعد (بين تطبيق العميل وجهاز التوجيه).