حدث خطأ في المهلة

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

المشكلة

يتعذّر نشر مراجعات حزمة خادم وكيل واجهة برمجة التطبيقات من خلال واجهة مستخدم Edge أو واجهة برمجة التطبيقات للإدارة بسبب انتهاء المهلة.

رسائل الخطأ

Click to change deployment status. 
The revision is deployed and traffic can flow, but flow may be impaired. 
Error: Call timed out; either server is down or server is not reachable

الأسباب المحتمَلة

في ما يلي الأسباب الشائعة لهذه المشكلة:

السبب التفاصيل لـ
مشكلة في الاتصال بالشبكة فشل الاتصال بين "خادم الإدارة" و"معالج الرسائل" بسبب مشاكل في الاتصال بالشبكة أو قواعد جدار الحماية. مستخدِمو السحابة الإلكترونية الخاصة فقط
حزمة خادم وكيل واجهة برمجة التطبيقات الكبيرة قد يستغرق "معالج الرسائل" وقتًا طويلاً للتفعيل إذا كانت حزمة خادم وكيل واجهة برمجة التطبيقات كبيرة الحجم، ما يؤدي إلى انتهاء مهلة طلبات الإجراء عن بُعد (RPC). مستخدِمو السحابة الإلكترونية الخاصة والعامة

مشكلة في الاتصال بالشبكة

ملاحظة: لا يمكن لمستخدِمو Edge Private Cloud فقط تنفيذ الخطوات التالية. إذا كنت تستخدم Edge Public Cloud، يُرجى التواصل مع فريق دعم Apigee Edge.

التشخيص

  1. احصل على حالة النشر لواجهة برمجة التطبيقات المحدّدة التي تعرض الخطأ باستخدام طلب بيانات من واجهة برمجة التطبيقات للإدارة التالي:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    مثال على النتيجة التي تعرض الخطأ:

    { 
                    "error": "Call timed out; either server is down or server is not reachable", 
                    "status": "error", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "state" : "error"
                    } 

    توضّح النتيجة أعلاه أنّ الخطأ حدث على أحد "معالجات الرسائل" التي تحمل المعرّف الفريد العالمي (UUID) "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. استنادًا إلى نتيجة حالة النشر لخادم وكيل واجهة برمجة التطبيقات، سجِّل الدخول إلى كل "معالج رسائل" يحمل المعرّف الفريد العالمي (UUID) المقابل الذي عرض الخطأ ونفِّذ الخطوات التالية:
    1. تحقَّق مما إذا كان "معالج الرسائل" يستمع على المنفذ 4528:
      netstat -an | grep LISTEN | grep 4528

      إذا كان "معالج الرسائل" لا يستمع على المنفذ 4528، فأعِد تشغيل "معالج الرسائل":

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. أعِد التحقّق من حالة تفعيل الخادم الوكيل لواجهة برمجة التطبيقات باستخدام طلب بيانات من واجهة برمجة التطبيقات للإدارة الموضّح في الخطوة 1 أعلاه. إذا لم تظهر أي أخطاء، فهذا يشير إلى حلّ المشكلة.
  3. إذا استمرّت المشكلة، اختبِر إمكانية الاتصال من "خادم الإدارة" إلى "معالج الرسائل" على المنفذ 4528 باستخدام الخطوات التالية:
    1. إذا كان الأمر telnet متاحًا، فاستخدِمه:
      telnet <MessageProcessor_IP> 4528
    2. إذا لم يكن الأمر telnet متاحًا، استخدِم netcat للتحقّق من إمكانية الاتصال على النحو التالي:
      nc -vz <MessageProcessor_IP> 4528
    3. إذا ظهرت لك الرسالة "تم رفض الاتصال" أو "انتهت مهلة الاتصال"، فتواصَل مع فريق عمليات الشبكة.
  4. اختبِر إمكانية الاتصال من "معالج الرسائل" إلى "خادم الإدارة" على المنفذ 4526 باستخدام الخطوات التالية:
    1. إذا كان الأمر telnet متاحًا، فاستخدِمه:
      telnet <management-server-IP> 4526
    2. إذا لم يكن الأمر telnet متاحًا، استخدِم netcat للتحقّق من إمكانية الاتصال على النحو التالي:
      nc -vz <management-server-IP> 4526 
    3. إذا ظهرت لك الرسالة "تم رفض الاتصال" أو "انتهت مهلة الاتصال"، فتواصَل مع فريق عمليات الشبكة.
  5. تعاوَن مع فريق عمليات الشبكة ونفِّذ ما يلي:
    1. تأكَّد من السماح ببروتوكول RPC على كل من "خادم الإدارة" و"معالج الرسائل" .
    2. أزِل أي قيود على جدار الحماية أو قواعد الأمان التي تم إعدادها بين "خوادم الإدارة" و"معالجات الرسائل" للسماح بالاتصال بالمنفذ 4526 على "خادم الإدارة"، و الاتصال من "خادم الإدارة" إلى "معالجات الرسائل" على المنفذ 4528.
  6. أعِد التحقّق من حالة النشر (راجِع الخطوة 1 أعلاه). إذا لم تظهر أي أخطاء، فهذا يشير إلى حلّ المشكلة.
  7. إذا استمرّت المشكلة، تحقَّق مما إذا كانت هناك مشكلة في الشبكة على "معالج الرسائل". إذا كانت هناك مشكلة في الشبكة، قد يؤدي إعادة تشغيل "معالج الرسائل" المحدّد الذي يعرض خطأ انتهاء المهلة (وفقًا لنتيجة حالة النشر) إلى حلّ المشكلة:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  8. إذا استمرّت المشكلة، تحقَّق من سجلّات "خادم الإدارة" في: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    مثال على خطأ انتهاء مهلة الطلب من سجلّ "خادم الإدارة"

    2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true 
            com.apigee.rpc.RPCException: Call timed out 
            at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] 
            at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] 
            at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79] 
            

    إذا ظهر لك خطأ مشابه للخطأ الموضّح في المثال أعلاه، فزِد مهلة طلب الإجراء عن بُعد (RPC) على "خادم الإدارة" حتى يمنح ذلك وقتًا لـ "خادم الإدارة" للاتصال بـ "معالج الرسائل" في حال حدوث أي تباطؤ في الشبكة.

الدقة

ملاحظة: لا يمكن لمستخدِمو Edge Private Cloud فقط تنفيذ الخطوات التالية. إذا كنت تستخدم Edge Public Cloud، يُرجى التواصل مع فريق دعم Apigee Edge.

  1. نفِّذ الخطوات التالية لزيادة مهلة طلب الإجراء عن بُعد (RPC):
    1. أنشِئ الملف /opt/apigee/customer/application/management-server.properties على جهاز "خادم الإدارة"، إذا لم يكن موجودًا من قبل.
    2. أضِف السطر التالي إلى هذا الملف:
      conf_cluster_rpc.connect.timeout=<time in seconds>

      القيمة التلقائية لمهلة طلب الإجراء عن بُعد (RPC) هي 10 ثوانٍ، ويُنصح بزيادتها إلى 40 ثانية. اضبطها على النحو التالي:

      conf_cluster_rpc.connect.timeout=40
    3. تأكَّد من أنّ المستخدم apigee هو مالك هذا الملف:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. أعِد تشغيل "خادم الإدارة":
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. إذا كان لديك أكثر من "خادم إدارة"، كرِّر الخطوات أعلاه على جميع الـ "خوادم الإدارة".
    6. انشر خادم وكيل واجهة برمجة التطبيقات في واجهة مستخدم Edge أو باستخدام طلب بيانات من واجهة برمجة التطبيقات للإدارة في Edge. إذا تم نشر خادم وكيل واجهة برمجة التطبيقات بدون أي مشاكل، فهذا يشير إلى حلّ المشكلة.
  2. إذا استمرّت المشكلة، فجمِّع tcpdump أمر من "خادم الإدارة" و"معالج الرسائل". فعِّل أمر tcpdump على كل خادم، ثم ابدأ نشر خادم وكيل واجهة برمجة التطبيقات من واجهة المستخدم أو باستخدام واجهة برمجة التطبيقات للإدارة:
    1. شغِّل أمر tcpdump أدناه من "خادم الإدارة":
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. شغِّل أمر tcpdump أدناه من "معالج الرسائل":
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. تواصَل مع فريق دعم Apigee Edge للحصول على مساعدة في تحليل عمليات tcpdump وتحديد المشاكل وحلّها بشكلٍ أكبر.

حزمة خادم وكيل واجهة برمجة التطبيقات الكبيرة

التشخيص

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

الدقة

ملاحظة: لا يمكن لمستخدِمو Edge Private Cloud فقط تنفيذ الخطوات التالية. إذا كنت تستخدم Edge Public Cloud، يُرجى التواصل مع فريق دعم Apigee Edge.

زِد مهلة طلب الإجراء عن بُعد (RPC) على "خادم الإدارة" حتى يكون لدى "معالج الرسائل" وقت كافٍ لتفعيل حِزم خادم وكيل واجهة برمجة التطبيقات الكبيرة. نفِّذ الخطوات التالية لزيادة قيمة مهلة طلب الإجراء عن بُعد (RPC) :

  1. أنشِئ الملف /opt/apigee/customer/application/management-server.properties على جهاز "خادم الإدارة"، إذا لم يكن موجودًا من قبل.
  2. أضِف السطر التالي إلى هذا الملف:
    conf_cluster_rpc.connect.timeout=<time in seconds>

    القيمة التلقائية لمهلة طلب الإجراء عن بُعد (RPC) هي 10 ثوانٍ، ويُنصح بزيادتها إلى 40 ثانية. اضبطها على النحو التالي:

    conf_cluster_rpc.connect.timeout=40
  3. تأكَّد من أنّ المستخدم apigee هو مالك هذا الملف:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. أعِد تشغيل "خادم الإدارة":
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. إذا كان لديك أكثر من "خادم إدارة"، كرِّر الخطوات أعلاه على جميع "خوادم الإدارة" .

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