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

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

علامت

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

پیام‌های خطا

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

علل احتمالی

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

علت جزئیات برای
مشکل اتصال شبکه قطع ارتباط بین سرور مدیریت و پردازنده پیام به دلیل مشکلات اتصال شبکه یا قوانین فایروال. فقط کاربران ابر خصوصی
بسته بزرگ پروکسی API اگر حجم بسته پروکسی API زیاد باشد، ممکن است فعال شدن پردازشگر پیام (Message Processor) مدت زیادی طول بکشد و منجر به وقفه‌های 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. بررسی کنید که آیا پردازنده پیام (Message Processor) روی پورت ۴۵۲۸ در حال گوش دادن است یا خیر:
      netstat -an | grep LISTEN | grep 4528

      اگر پردازشگر پیام به پورت ۴۵۲۸ گوش نمی‌دهد، پردازشگر پیام را مجدداً راه‌اندازی کنید:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. وضعیت استقرار پروکسی API را با استفاده از فراخوانی API مدیریتی که در مرحله ۱ بالا نشان داده شده است، دوباره بررسی کنید. اگر خطایی وجود نداشت، نشان می‌دهد که مشکل برطرف شده است.
  3. اگر مشکل همچنان ادامه داشت، اتصال از سرور مدیریت به پردازنده پیام را روی پورت ۴۵۲۸ با استفاده از مراحل زیر آزمایش کنید:
    1. اگر telnet در دسترس است، از telnet استفاده کنید:
      telnet <MessageProcessor_IP> 4528
    2. اگر telnet در دسترس نبود، از netcat برای بررسی اتصال به صورت زیر استفاده کنید:
      nc -vz <MessageProcessor_IP> 4528
    3. اگر با پیام‌های «اتصال رد شد» یا «زمان اتصال به پایان رسید» مواجه شدید، با تیم عملیات شبکه خود تماس بگیرید.
  4. اتصال از پردازنده پیام به سرور مدیریت روی پورت ۴۵۲۶ را با استفاده از مراحل زیر آزمایش کنید:
    1. اگر telnet در دسترس است، از telnet استفاده کنید:
      telnet <management-server-IP> 4526
    2. اگر telnet در دسترس نبود، از netcat برای بررسی اتصال به صورت زیر استفاده کنید:
      nc -vz <management-server-IP> 4526 
    3. اگر با پیام‌های «اتصال رد شد» یا «زمان اتصال به پایان رسید» مواجه شدید، با تیم عملیات شبکه خود تماس بگیرید.
  5. با تیم عملیات شبکه خود همکاری کنید و موارد زیر را انجام دهید:
    1. اطمینان حاصل کنید که پروتکل RPC هم در سرور مدیریت و هم در پردازنده پیام مجاز است.
    2. هرگونه محدودیت فایروال یا قوانین امنیتی تنظیم‌شده بین سرورهای مدیریت و پردازنده‌های پیام را حذف کنید تا امکان اتصال به پورت ۴۵۲۶ روی سرور مدیریت و اتصال از سرور مدیریت به پردازنده‌های پیام روی پورت ۴۵۲۸ فراهم شود.
  6. وضعیت استقرار را دوباره بررسی کنید (به مرحله ۱ در بالا مراجعه کنید). اگر هیچ خطایی مشاهده نکردید، نشان می‌دهد که خطا برطرف شده است.
  7. اگر مشکل همچنان ادامه داشت، بررسی کنید که آیا مشکل شبکه در پردازنده پیام وجود دارد یا خیر. اگر مشکل شبکه وجود دارد، راه‌اندازی مجدد پردازنده پیام خاصی که خطای timeout را نشان می‌دهد (مطابق با خروجی وضعیت استقرار) ممکن است مشکل را برطرف کند:
    /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 برابر با ۱۰ است و توصیه می‌شود آن را به ۴۰ ثانیه افزایش دهید. آن را به صورت زیر تنظیم کنید:

      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 Proxy را از رابط کاربری یا با استفاده از 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. اگر اندازه فایل نسبتاً بزرگ باشد (۱۰ مگابایت یا بیشتر)، احتمالاً پردازشگر پیام برای فعال کردن پروکسی API به زمان بیشتری نیاز دارد.
  3. اگر اندازه بسته API Proxy بیشتر از ۱۵ مگابایت باشد، به بسته API Proxy بزرگتر از ۱۵ مگابایت بروید.

وضوح تصویر

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

زمان انتظار RPC را در سرور مدیریت افزایش دهید تا پردازنده پیام زمان کافی برای فعال کردن بسته‌های پروکسی API بزرگ داشته باشد. برای افزایش مقدار زمان انتظار RPC مراحل زیر را انجام دهید:

  1. اگر فایل /opt/apigee/customer/application/management-server.properties از قبل وجود ندارد، آن را روی دستگاه Management Server ایجاد کنید.
  2. خط زیر را به این فایل اضافه کنید:
    conf_cluster_rpc.connect.timeout=<time in seconds>

    مقدار پیش‌فرض زمان انتظار RPC برابر با ۱۰ است و توصیه می‌شود آن را به ۴۰ ثانیه افزایش دهید. آن را به صورت زیر تنظیم کنید:

    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 تماس بگیرید.