خطای مهلت زمانی

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

علامت

استقرار ویرایش‌های پراکسی API از طریق رابط کاربری Edge یا مدیریت API با خطای مهلت زمانی انجام نمی‌شود.

پیام های خطا

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

علل احتمالی

علل معمول این مشکل عبارتند از:

علت جزئیات برای
مشکل اتصال به شبکه خرابی ارتباط بین مدیریت سرور و پردازشگر پیام به دلیل مشکلات اتصال به شبکه یا قوانین فایروال. فقط کاربران خصوصی Cloud
بسته پروکسی API بزرگ اگر بسته پروکسی API بزرگ باشد، ممکن است زمان زیادی طول بکشد تا فعال شود و منجر به وقفه زمانی RPC شود. کاربران خصوصی و عمومی ابر

مشکل اتصال به شبکه

توجه: فقط کاربران Edge Private Cloud می توانند مراحل زیر را انجام دهند. اگر در Edge Public Cloud هستید، با پشتیبانی Apigee Edge تماس بگیرید.

تشخیص

  1. با استفاده از فراخوانی مدیریت API زیر، وضعیت استقرار API خاصی را که خطا را نشان می دهد، دریافت کنید:
    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. بر اساس خروجی وضعیت استقرار برای پراکسی API خود، با UUID مربوطه که خطا را نشان می‌دهد به هر یک از پردازشگرهای پیام وارد شوید و مراحل زیر را انجام دهید:
    1. بررسی کنید که آیا پردازشگر پیام در حال گوش دادن به پورت 4528 است:
      netstat -an | grep LISTEN | grep 4528

      اگر پردازشگر پیام به پورت 4528 گوش نمی دهد، پردازشگر پیام را مجددا راه اندازی کنید:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. با استفاده از فراخوانی مدیریت API نشان داده شده در مرحله شماره 1 در بالا، وضعیت استقرار پراکسی API را دوباره بررسی کنید. اگر خطایی وجود نداشته باشد، این نشان می دهد که مشکل حل شده است.
  3. اگر مشکل همچنان ادامه داشت، با استفاده از مراحل زیر، اتصال از سرور مدیریت به پردازشگر پیام را در پورت 4528 آزمایش کنید:
    1. اگر telnet در دسترس است، از telnet استفاده کنید:
      telnet <MessageProcessor_IP> 4528
    2. اگر telnet در دسترس نیست، از netcat برای بررسی اتصال به صورت زیر استفاده کنید:
      nc -vz <MessageProcessor_IP> 4528
    3. اگر پاسخ «اتصال رد شد» یا «وقت اتصال تمام شد» دریافت کردید، تیم عملیات شبکه خود را درگیر کنید.
  4. اتصال از پردازشگر پیام به سرور مدیریت در پورت 4526 را با استفاده از مراحل زیر آزمایش کنید:
    1. اگر telnet در دسترس است، از 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. پراکسی API را در رابط کاربری Edge یا با استفاده از تماس API مدیریت Edge مستقر کنید. اگر پروکسی API بدون هیچ مشکلی مستقر شود، این نشان می دهد که مشکل حل شده است.
  2. اگر مشکل ادامه داشت، دستور tcpdump را از سرور مدیریت و پردازشگر پیام جمع آوری کنید. دستور tcpdump را در هر یک از سرورها فعال کنید و سپس استقرار پروکسی API را از رابط کاربری یا با استفاده از API مدیریت آغاز کنید:
    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. برای دریافت کمک در مورد تجزیه و تحلیل tcpdumps و عیب یابی بیشتر با پشتیبانی Apigee Edge تماس بگیرید.

بسته پروکسی API بزرگ

تشخیص

  1. اندازه بسته پروکسی API را که خطای استقرار برای آن مشاهده شده است بررسی کنید.
  2. اگر اندازه نسبتاً بزرگ است (10 مگابایت یا بالاتر)، پس به احتمال زیاد پردازشگر پیام برای فعال کردن پراکسی API به زمان بیشتری نیاز دارد.
  3. اگر اندازه API Proxy bundle بیشتر از 15 مگابایت است، سپس به API Proxy Bundle بزرگتر از 15 مگابایت بروید.

قطعنامه

توجه: فقط کاربران Edge Private Cloud می توانند مراحل زیر را انجام دهند. اگر در Edge Public Cloud هستید، با پشتیبانی Apigee Edge تماس بگیرید.

مدت زمان RPC را در سرور مدیریت افزایش دهید تا پردازشگر پیام زمان کافی برای فعال کردن بسته های پراکسی API بزرگ داشته باشد. مراحل زیر را برای افزایش مقدار بازه زمانی 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 تماس بگیرید.