503 الخدمة غير متوفّرة

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

الفيديوهات الطويلة

راجع مقاطع الفيديو التالية للحصول على مزيد من المعلومات حول أخطاء 503:

حملة فيديو الوصف
تحديد وحلّ مشكلة "خطأ 503 Service Unavailable" بسبب مشكلة في نظام أسماء النطاقات (DNS) تعرَّف على ما يلي:
  • خطأ 503 Service Unavailable بسبب التحويل باستخدام نظام أسماء النطاقات (DNS) والمشاكل المتعلقة بالشبكة في Apigee Edge
  • استكشاف الأخطاء وإصلاحها وحل خطأ "خدمة 503 - غير متاح" في الوقت الفعلي الناتج عن مشكلة في تحليل نظام أسماء النطاقات (DNS)
تحديد وحلّ مشكلة الخطأ "503 الخدمة غير متاحة" بسبب مشكلة في الشبكة تحديد المشاكل وحلّها في الوقت الفعلي "خطأ 503 Service Unavailable" الناتج عن مشكلة Network (الشبكة) في 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 الخدمة غير متاحة مع رمز الخطأ messaging.adaptors.http.flow.ServiceUnavailable إذا واجه معالج الرسائل في Apigee Edge أخطاءً بسبب انتهاء مهلة الاتصال، أو اسم مضيف غير صحيح، أو فشل تأكيد اتصال طبقة المقابس الآمنة (SSL) أثناء الاتصال بالخادم الخلفية.

الأسباب المحتملة للاستجابة 503 Service Unavailable هي:

السبب الوصف المستخدمون الذين يمكنهم تنفيذ خطوات تحديد المشاكل وحلّها
أخطاء في الاتصال بسبب التحويل غير الصحيح لنظام أسماء النطاقات (DNS) أدّى التحويل باستخدام نظام أسماء النطاقات (DNS) من الخادم الهدف إلى ظهور عناوين IP سيئة تؤدي إلى حدوث أخطاء في الاتصال. مستخدمو Edge Private Cloud
أخطاء في الربط تحول مشكلات الشبكة أو الاتصال دون اتصال العميل بالخادم. مستخدمو Edge Private Cloud
اسم مضيف الخادم الهدف غير صحيح مضيف الخادم الهدف المحدّد غير صحيح أو يحتوي على أحرف غير مرغوب فيها (مثل المسافة). مستخدمو Edge العام والخاص على السحابة الإلكترونية
حالات إخفاق تأكيد اتصال طبقة المقابس الآمنة (SSL) تعذّرت تأكيد اتصال بروتوكول أمان طبقة النقل (TLS)/طبقة المقابس الآمنة بين العميل والخادم. (يتم تناول تحديد المشاكل وحلّها لهذه الفئة في موضوع منفصل). مستخدمو Edge العام والخاص على السحابة الإلكترونية

خطوات التشخيص الشائعة

تحديد معرّف الرسالة للطلب الذي تعذّر تنفيذه

أداة التتبُّع

لتحديد رقم تعريف الرسالة التي تعذّر تنفيذها باستخدام "أداة التتبُّع":

  1. إذا كانت المشكلة لا تزال نشطة، فعِّل جلسة التتبُّع لواجهة برمجة التطبيقات المتأثرة.
  2. يمكنك إجراء طلب بيانات من واجهة برمجة التطبيقات وإعادة إظهار المشكلة - خدمة 503 غير متاحة مع رمز الخطأ messaging.adaptors.http.flow.ServiceUnavailable.
  3. اختَر أحد الطلبات التي تعذّر تنفيذها.
  4. انتقِل إلى مرحلة AX، وحدِّد معرّف الرسالة (X-Apigee.Message-ID) للطلب من خلال الانتقال للأسفل في قسم Stage Details (تفاصيل المرحلة) كما هو موضّح في الشكل التالي.

    معرّف الرسالة في قسم "تفاصيل المرحلة"

سجلات وصول NGINX

لتحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه باستخدام سجلات وصول NGINX:

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

  1. تحقَّق من سجلات وصول NGINX: (/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log)
  2. ابحث عن أي أخطاء 503 للخادم الوكيل المحدّد لواجهة برمجة التطبيقات خلال مدة محدّدة (إذا حدثت المشكلة في السابق) أو إذا كانت هناك أي طلبات لا تزال تفشل في الخطأ 503.
  3. في حال ظهور أي أخطاء من أخطاء 503 مع رسالة X-Apigee-error-code messaging.adaptors.http.flow.ServiceUnavailable، اطّلِع على معرّف الرسالة لطلب واحد أو أكثر، كما هو موضّح في المثال التالي:

    إدخال نموذجي يعرض الخطأ 503

    إدخال نموذجي يعرض رمز الحالة ورقم تعريف الرسالة ومصدر الخطأ ورمز الخطأ

أخطاء في الاتصال بسبب دقة نظام أسماء النطاقات غير صحيحة

التشخيص

  1. تحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه:
  2. ابحث عن معرِّف رسالة الطلب المحدد في سجل معالج الرسائل (/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)
          
  3. لاحظ عنوان IP الذي تم حله في خطأ onConnectTimeout وتحقق من مدى صلاحية عنوان IP لخادم الخلفية. إذا كان عنوان IP صالحًا، انتقِل إلى أخطاء الاتصال.
  4. إذا كان عنوان IP غير صالح، قد يرجع ذلك على الأرجح إلى مشاكل في التحويل باستخدام نظام أسماء النطاقات (DNS).
  5. كرِّر الخطوة 3 والخطوة 4 لبعض طلبات البيانات من واجهة برمجة التطبيقات التي تعذّر تنفيذها ثم تحقّق من ظهور عناوين IP نفسها أو أي عناوين أخرى غير صالحة.
  6. ابحث في سجل معالج الرسائل (/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]
          
  7. يمكن أن تحدث هذه المشكلة إذا كانت هناك أي مشاكل في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء التي تم ضبطها في /etc/resolv.conf.

    عادةً، قد يكون هناك خادم واحد أو أكثر من خوادم نظام أسماء النطاقات الموثوقة التي تم إعدادها لإجراء تحليل نظام أسماء النطاقات. في حال عدم توفُّر خوادم نظام أسماء نطاقات موثوقة، سيتم الرجوع إلى ضبط الإعدادات في /etc/resolv.conf وإجراء التحويل باستخدام نظام أسماء النطاقات وفقًا لما هو مناسب. على سبيل المثال: إذا تم ضبط /etc/resolv.conf لاستخدام خوادم أسماء معيّنة، سيتم استخدام خوادم الأسماء هذه لتنفيذ التحويل باستخدام نظام أسماء النطاقات (DNS).
  8. إذا تم رصد أي مشاكل في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدَّدة في /etc/resolv.conf، سيتم التعامل مع أسماء مضيفي الخادم الخلفية إلى عناوين IP غير صالحة أو غير صالحة. وسيتم بعد ذلك تخزين عناوين IP غير الصالحة/غير الصالحة في ذاكرة التخزين المؤقت لنظام أسماء النطاقات في معالج الرسائل.
    1. إذا استمرت المشكلة بشأن خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدّدة في /etc/resolv.conf، ستبقى عناوين IP غير الصالحة أو غير الصالحة في ذاكرة التخزين المؤقت لنظام أسماء النطاقات لمعالج الرسائل. وطالما أن عناوين IP غير الصالحة مخزنة في ذاكرة التخزين المؤقت لنظام أسماء النطاقات لمعالج الرسائل، ستفشل طلبات جميع واجهات برمجة التطبيقات التي تستخدم خادم الخلفية المحدد مع عرض الخطأ 503.
    2. إذا كانت المشكلة المتعلّقة بخوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدّدة في /etc/resolv.conf تحدث بشكل متقطع، سيتم تخزين عناوين IP الجيدة والسيئة بشكل متقطع في ذاكرة التخزين المؤقت لنظام أسماء النطاقات. وفي هذه الحالة، ستظهر لك أخطاء 503 بشكل متقطع لجميع واجهات برمجة التطبيقات هذه التي تستخدم خادم الخلفية المحدّد.
  9. إذا كانت المشكلة المتعلقة بخوادم نظام أسماء النطاقات مستمرة، فستلاحظ حالات إخفاق مستمرة. إذا كانت المشكلة المتعلقة بخوادم نظام أسماء النطاقات متقطعة، ستلاحظ حالات إخفاقًا متقطّعة. أي، كلما تم حل اسم مضيف الخادم الخلفي إلى عناوين IP سيئة، تلاحظ حدوث أخطاء 503. وعندما يتم حل أسماء مضيفي الخادم الخلفي إلى عناوين IP جيدة، ستلاحظ ردودًا ناجحة.

درجة الدقّة

يُرجى العمل مع مشرف نظام التشغيل وإصلاح المشكلات المتعلقة بخوادم نظام أسماء النطاقات.

  1. إذا كانت هناك مشكلة في خوادم نظام أسماء النطاقات الموثوقة أو خوادم الأسماء المحدّدة في /etc/resolv.conf، يمكنك حينئذٍ حل المشكلة من خلال الخادم المناسب لمعالجة هذه المشكلة.
  2. إذا كانت هناك أي مشكلة في الضبط في /etc/resolv.conf على الأنظمة التي تحتوي على معالِجات رسائل، يجب حلّ مشكلة الضبط.

أخطاء في الربط

يحدث خطأ في الاتصال عندما يحاول معالج رسائل Apigee Edge الاتصال بخادم خلفية وتحدث إحدى المشاكل التالية:

  • يتعذّر على معالج الرسائل الاتصال خلال فترة مهلة الاتصال المُعَدّة مسبقًا. (المدة التلقائية: 3 ثوانٍ)
  • يرفض خادم الخلفية الاتصال.

التشخيص

  1. تحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه:
  2. ابحث عن معرِّف رسالة الطلب المحدَّد في سجلّ معالج الرسائل (/opt/apigee/var/log/edge-message-processor/logs/system.log)، وقد تلاحظ الأخطاء التالية:
    1. يشير خطأ 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)
      
    2. يشير الخطأ java.net.ConnectException: Connection المرفوض إلى أنه تم رفض الاتصال من خلال خادم الخلفية.
      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]
      
  3. تحقق مما إذا كان بإمكانك الاتصال بخادم الخلفية المحدد مباشرةً من كل من معالِجات الرسائل باستخدام الأمر telnet:
    1. في حال ضبط خادم الخلفية على عنوان IP واحد، استخدِم الأمر التالي:
      telnet BackendServer-IPaddress 443
                
    2. في حال تحويل الخادم الخلفي إلى عناوين IP متعددة، استخدِم اسم المضيف لخادم الخلفية في الأمر telnet كما هو موضّح أدناه:
      telnet BackendServer-HostName 443
                
  4. إذا كان بإمكانك الاتصال بخادم الخلفية، قد تظهر لك رسالة مثل Connected to backend-server. إذا تعذّر عليك الاتصال بخادم الخلفية، قد يرجع ذلك إلى أنّ عناوين IP لمعالجات الرسائل غير مُدرَجة في القائمة المسموح بها على الخادم الخلفي.

درجة الدقّة

يجب منح إذن الوصول إلى عناوين IP لمعالج الرسائل على الخادم الخلفي للسماح بوصول حركة البيانات من هذه المعالجات الرسائل إلى خادم الخلفية. على سبيل المثال، على نظام التشغيل Linux، يمكنك استخدام iptables للسماح بالزيارات الواردة من عناوين IP لمعالج الرسائل على الخادم الخلفي.

في حال استمرار المشكلة، يُرجى التواصل مع مشرف الشبكة لتحديد المشكلة وحلّها. إذا كنت بحاجة إلى مزيد من المساعدة من Apigee، يُرجى التواصل مع فريق دعم Apigee.

اسم مضيف الخادم الهدف غير صحيح

التشخيص

إذا كان اسم المضيف المحدَّد في الخادم الهدف غير صحيح، يمكنك الحصول على الاستجابة 503 Service Unavailable مع رمز الخطأ messaging.adaptors.http.flow.ServiceUnavailable..

أداة التتبُّع

لتشخيص المشكلة باستخدام أداة التتبُّع:

  1. إذا كانت المشكلة لا تزال نشطة، فعِّل جلسة التتبُّع لواجهة برمجة التطبيقات المتأثرة.
  2. يمكنك إجراء طلب بيانات من واجهة برمجة التطبيقات وإعادة إظهار المشكلة - خدمة 503 غير متاحة مع رمز الخطأ messaging.adaptors.http.flow.ServiceUnavailable.
  3. اختَر أحد الطلبات التي تعذّر تنفيذها.
  4. تنقّل خلال المراحل المختلفة لعملية التتبّع وحدِّد مكان حدوث العطل.
  5. اختر FlowInfo التي تحتوي على الخطأ. قد تجد المزيد من المعلومات في الحقل error.cause والتي قد توضّح لك سبب الفشل كما هو موضَّح في المثال التالي:

    نموذج طلب يعرض رسالة error.cause في التتبُّع

    نموذج طلب يعرض error.cause في التتبُّع
  6. إذا لاحظت أنّ الخطأ error.cause يعرض الخطأ المضيف لا يمكن الوصول إليه، يعني ذلك أنّ السبب المحتمل للخطأ هو أحد الأسباب التالية:
    • اسم المضيف المحدّد في إعداد الخادم الهدف/نقطة النهاية المستهدفة غير صحيح أو يحتوي على مساحة غير مرغوب فيها أو رموز خاصة.

      على سبيل المثال، هناك مساحة غير مرغوب فيها في اسم المضيف كما هو موضّح أدناه:
      "demo-target.apigee.net "
                        
    • اسم المضيف الذي تم استبداله بالمتغيّر target.url في الخادم الوكيل لواجهة برمجة التطبيقات باستخدام سياسة AssignMessage أو JavaScript غير صحيح أو يتضمّن مسافة أو أي رموز خاصة أخرى غير مرغوب فيها.
  7. تحقَّق من إعدادات نقطة النهاية المستهدَفة و/أو تعريف الخادم الهدف لمعرفة ما إذا كان اسم مضيف الخادم الهدف غير صحيح أو أنّه يتضمّن أي مساحة غير مرغوب فيها أو رموز خاصة.
  8. إذا تم إنشاء مضيف الخادم المستهدف بشكل ديناميكي، راجِع السياسة المناسبة (مثل سياسة AssignMessage/JavaScript) المستخدَمة لإنشائها. تحقَّق ممّا إذا كان اسم مضيف الخادم الهدف غير صحيح أو يتضمّن أي مساحة أو رموز خاصة غير مرغوب فيها.
  9. بعد تحديد اسم مضيف الخادم المستهدف، شغِّل الأمر 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
    
  10. إذا تعذّر أيضًا على أمر نظام التشغيل nslookup حلّ اسم المضيف، يكون سبب هذه المشكلة هو اسم المضيف غير الصحيح المستخدَم للخادم الهدف.

    انتقِل إلى درجة الدقة.

سجلات معالج الرسائل

لتشخيص المشكلة باستخدام سجلّات معالج الرسائل:

  1. تحديد رقم تعريف الرسالة للطلب الذي تعذّر تنفيذه
  2. ابحث عن معرِّف الرسالة في سجلّ "معالج الرسائل". (/opt/apigee/var/log/edge-message-processor/logs/system.log)
  3. إذا ظهرت لك رسائل التحذير/الخطأ التالية، فهذا يعني أن معالج الرسائل لم يتمكن من حل اسم المضيف. بما أنّه سيتم تأجيل الرسالة، قد لا تظهر لك رسالة التحذير هذه لجميع معرّفات/طلبات الرسائل.
    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
        
  4. سينتج عن ذلك رسالة تحذير، حيث يزيل "معالج الرسائل" العنوان من ذاكرة التخزين المؤقت لنظام أسماء النطاقات، حيث تعذَّر الوصول إلى مضيف الخادم الهدف.
    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
        
  5. قد ترى بعد ذلك رسالة يفشل فيها معالج الرسائل مع استثناء "لا يمكن الوصول إلى المضيف". في بعض الأحيان، يعرض اسم المضيف كجزء من رسالة الخطأ:
    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>
        
  6. قد يظهر أحيانًا على أنّه 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>
        
  7. يحدث الخطأ 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 غير صحيح أو يتضمّن مسافة أو أي رموز خاصة أخرى غير مرغوب فيها.
  8. حدد اسم مضيف الخادم الهدف الذي يحاول معالج الرسائل الاتصال به باستخدام أحد الخيارات التالية:
    1. راجِع رسالة الخطأ التي تحتوي على Host not reachable بعناية.
    2. إذا عرضت رسالة الخطأ اسم المضيف، انسخ اسم المضيف متضمنًا أي مسافات أو أي رموز خاصة.
    3. إذا كانت رسالة الخطأ تعرض قيمة فارغة لاسم المضيف كما هو موضّح في رسالة الخطأ التالية،
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      1. حدد اسم المضيف من خلال التحقق من تعريف الخادم المستهدف المستخدم في الخادم الوكيل لواجهة برمجة التطبيقات الذي أخفق.
      2. إذا تم إنشاء مضيف الخادم المستهدف بشكل ديناميكي، راجِع السياسة المناسبة (على سبيل المثال، سياسة تعيين/JavaScript) المستخدَمة لإنشائه.
  9. بعد تحديد اسم مضيف الخادم المستهدف، شغِّل الأمر 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
          
  10. إذا تعذّر أيضًا حل أمر نظام التشغيل nslookup في حل اسم المضيف، يكون سبب هذه المشكلة هو اسم المضيف غير الصحيح المستخدم للخادم الهدف.

درجة الدقّة

  1. تأكَّد من أنّ اسم مضيف الخادم الهدف المحدّد في ضبط نقطة النهاية المستهدَفة أو في تعريف الخادم الهدف صحيح ولا يحتوي على أي مسافات أو رموز خاصة غير مرغوب فيها.
  2. في حال استخدام أي سياسة AssignMessage/JavaScript لإنشاء اسم مضيف الخادم الهدف ديناميكيًا، تحقَّق من تعريف السياسة والرمز وتأكَّد من إنشاء اسم مضيف الخادم الهدف بشكل صحيح.

إخفاقات تأكيد اتصال طبقة المقابس الآمنة (SSL)

إنّ الدليل الإرشادي الكامل لتحديد المشاكل وحلّها مخصَّص لأخطاء تأكيد الاتصال في بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة (SSL). راجع إخفاقات تأكيد الاتصال بطبقة المقابس الآمنة (SSL).

تحديد مصدر المشكلة

يمكن أن تحدث أنواع معيّنة من الأخطاء سواء في الاتصال الوارد (الشمال) أو الاتصالات الصادرة (الصادرة). يحدث خطأ وارد (شمالي) بين تطبيق العميل وEdge. يحدث خطأ صادر (خارجي) بين Edge والخادم الهدف في الخلفية. لتشخيص هذه الأنواع من المشاكل، مهمتك الأولى هي معرفة ما إذا كان الخطأ قد حدث في الاتصال الشمالي أم الجنوبي.

فهم الروابط الشمالية والجنوبية

في Edge، قد تواجه الخطأ 503 Service Unavailable على أي من الاتصال الوارد أو الصادر:

  • الاتصال الوارد (أو الشمالي) - الاتصال بين تطبيق العميل وجهاز توجيه Edge. جهاز التوجيه هو مكوّن Apigee Edge الذي يعالج الطلبات الواردة إلى النظام.
  • الاتصال الصادر (أو جنوبي): هو الاتصال بين معالج رسائل Edge وخادم الخلفية. معالج الرسائل هو أحد مكونات Apigee Edge التي تعمل على إنشاء خوادم وكيلة لطلبات واجهة برمجة التطبيقات للخوادم الهدف في الخلفية.

إذا كنت من مستخدمي Edge Public Cloud، قد لا تكون على دراية بالمكوّنات الداخلية مثل جهاز التوجيه أو معالج الرسائل. هذه المكوّنات الداخلية غير مرئية أو لا يمكن لمستخدمي السحابة الإلكترونية العامة الوصول إليها. ونوفّر حيثما أمكن طرقًا بديلة للتحقيق في المشكلة التي لا تتطلب الوصول المباشر إلى هذه المكوّنات.

يوضح الشكل التالي الروابط الشمالية والجنوبية لـ Apigee Edge.

تدفق تطبيق العميل (اتصال شمالي) عبر خادم Edge إلى خادم الخلفية (اتصال خارجي)

تحديد مكان حدوث الخطأ "503 الخدمة غير متاحة"

اتّبِع أحد الإجراءات التالية لتحديد ما إذا كان الخطأ "503 الخدمة غير متاحة" قد حدث في الاتصال الشمالي أو الجنوبي.

تتبُّع أداء واجهة المستخدم

لتحديد مكان حدوث الخطأ باستخدام تتبع واجهة المستخدم:

  1. إذا كانت المشكلة لا تزال نشطة، يمكنك تفعيل عمليات تتبّع واجهة المستخدم لواجهة برمجة التطبيقات المتأثرة.
  2. إذا أظهر تقرير تتبُّع واجهة المستخدم الخاص بطلب واجهة برمجة التطبيقات الذي تعذّر تنفيذه ظهور الخطأ "503 الخدمة غير متوفّرة" أثناء تدفق الطلب المستهدَف أو تم إرساله من خادم الخلفية، يعني ذلك أنّ المشكلة تكون بعيدًا (أي بين معالج الرسائل وخادم الخلفية).
  3. إذا لم يظهر لك تتبُّع طلب البيانات من واجهة برمجة التطبيقات المحدّد، يعني ذلك أنّ المشكلة تكون منفصلة بين تطبيق العميل وجهاز التوجيه.

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

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

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

سجلات وصول NGINX

لتحديد مكان حدوث الخطأ باستخدام تتبع واجهة المستخدم:

إذا حدثت المشكلة في الماضي أو إذا كانت متقطعة ولم تتمكن من رصد بيانات تتبُّعها، يمكنك اتّباع الخطوات التالية:

  1. تحقَّق من سجلات وصول NGINX (/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log ).
  2. ابحث عن أي أخطاء 503 لخادم وكيل محدد لواجهة برمجة التطبيقات.
  3. إذا تمكنت من تحديد أي أخطاء 503 لواجهة برمجة تطبيقات معينة في وقت محدد، فحينئذٍ تحدث المشكلة في اتصال southbound (بين معالج الرسائل وخادم الخلفية).
  4. إذا لم يكن الأمر كذلك، يعني ذلك أنّ المشكلة حدثت في الاتصال الشمالي (بين تطبيق العميل وجهاز التوجيه).