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

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

الفيديوهات

يمكنك الاطّلاع على الفيديوهات التالية للحصول على مزيد من المعلومات حول أخطاء 503:

فيديو الوصف
تحديد المشاكل وحلّها في ما يتعلّق بخطأ "عدم توفّر الخدمة 503" بسبب مشكلة في نظام أسماء النطاقات يمكنك الاطّلاع على ما يلي:
  • الخطأ 503 "الخدمة غير متوفرة" بسبب التحويل باستخدام نظام أسماء النطاقات (DNS) والمشاكل المتعلقة بالشبكة في Apigee Edge
  • تحديد وحلّ مشكلة الخطأ "503 الخدمة غير متوفّرة" في الوقت الفعلي والناتجة عن مشكلة في حل نظام أسماء النطاقات (DNS)
تحديد المشاكل وحلّها في ما يتعلّق بخطأ "عدم توفّر الخدمة 503" بسبب مشكلة في الشبكة تحديد وحلّ مشكلة "خطأ غير متوفّر في خدمة 503 في الوقت الفعلي" بسبب مشكلة في الشبكة في 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 غير متوفرة ما يلي:

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

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

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

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

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

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

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

سجلات وصول NGINX

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

يمكنك أيضًا الرجوع إلى سجلات NGINX Access لتحديد معرِّف الرسالة لأخطاء 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 message.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 نفسها أو أي عناوين IP أخرى غير صالحة.
  6. ابحث في سجلّ معالج الرسائل (/opt/apigee/var/log/edge-message-processor/logs/system.log) عن الرسائل التي تتضمّن الكلمة الأساسية DNS Refresh (إعادة تحميل نظام أسماء النطاقات). تحقق مما إذا كان تتم إضافة عناوين 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 وتنفيذ التحويل باستخدام نظام أسماء النطاقات (DNS) بالشكل المناسب. على سبيل المثال: إذا تم ضبط /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: تم رفض الاتصال إلى الاتصال من قبل خادم الخلفية.
      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 الخاصة بمعالج الرسائل على خادم الخلفية المحدد للسماح بذلك حركة البيانات من معالِجات الرسائل في Edge للوصول إلى خادم الخلفية. على سبيل المثال، في نظام التشغيل Linux، يمكنك استخدام iptables للسماح بالزيارات من عناوين IP لمعالج الرسائل على خادم الخلفية.

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

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

التشخيص

إذا كان اسم المضيف المحدد في الخادم الهدف غير صحيح، يمكنك الحصول على الاستجابة 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. إذا ظهرت رسالة الخطأ 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 {}
              
      1. حدِّد اسم المضيف من خلال التحقّق من تعريف الخادم الهدف المُستخدَم في الخادم الوكيل لواجهة برمجة التطبيقات الذي تعذّر إكماله.
      2. وفي حال إنشاء مضيف الخادم الهدف ديناميكيًا، تحقَّق من السياسة المناسبة (مثل سياسة 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. إذا كنت تستخدم أي سياسة assignMessage/JavaScript لإنشاء اسم مضيف الخادم الهدف ديناميكيًا، تحقّق من تعريف السياسة والرمز. والتأكد من إنشاء اسم المضيف للخادم المستهدف بشكل صحيح.

تعذَّر تأكيد اتصال طبقة المقابس الآمنة (SSL)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الاطّلاع على سيناريو نموذجي يوضّح كيفية تحديد مشاكل 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 في واجهة برمجة التطبيقات المحددة في الوقت المحدد، فعندئذ حدثت مشكلة في الاتصال الخارجي (بين معالج الرسائل خادم الخلفية).
  4. إذا لم يكن الأمر كذلك، فهذا يعني أن المشكلة حدثت عند الاتصال northbound (بين تطبيق العميل وجهاز التوجيه).