‫۵۰۳ سرویس دردسترس نیست - سرور زیرینه

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

ویدیوها

برای کسب اطلاعات بیشتر درباره حل خطاهای «۵۰۳ سرویس دردسترس نیست»، ویدیو زیر را تماشا کنید.

ویدیو شرح
خطای ۵۰۳ سرویس دردسترس نیست از سرور زیرینه درباره موارد زیر بیشتر بدانید:
  • مقدمه‌ای بر خطای «۵۰۳ سرویس دردسترس نیست» در Apigee Edge
  • عیب‌یابی و رفع خطای «۵۰۳ سرویس دردسترس نیست» هم‌زمان از سرور زیرینه

نشانه

برنامه کارخواه وضعیت پاسخ HTTP 503 را با پیام Service Unavailable (سرویس دردسترس نیست) پس‌از فراخوانی پراکسی API دریافت می‌کند.

پیام‌های خطا

ممکن است یکی از پیام‌های خطای زیر را ببینید:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

همچنین ممکن است پیام خطایی مانند پیام زیر در پاسخ HTTP ببینید:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

توجه: کد پاسخ و پیام خطای بالا فقط نمونه هستند. در برخی موارد، ممکن است فقط کد پاسخ خطا را بدون هیچ پیام خطایی دریافت کنید. قالب و محتوای کد پاسخ خطا و پیام خطا ممکن است بسته به پیاده‌سازی سرور زیرینه متفاوت باشد.

دلایل

کد وضعیت HTTP 503 به این معنی است که سرور درحال‌حاضر نمی‌تواند درخواست‌های ورودی را مدیریت کند. معمولاً این خطا به این دلیل رخ می‌دهد که سرور بسیار مشغول است یا به‌طور موقت برای نگهداری ازکارافتاده است.

علل احتمالی برای پاسخ ۵۰۳ سرویس دردسترس نیست عبارت‌اند از:

علت شرح چه کسی می‌تواند مراحل عیب‌یابی را انجام دهد
سرور بیش‌ازحد بارگذاری‌شده سرور پشتیبان اضافه‌بار دارد یا از ظرفیت خود فراتر رفته است و نمی‌تواند درخواست‌های ورودی جدید کارخواه را مدیریت کند. کاربران «فضای ابری خصوصی و عمومی لبه‌ای»
سرور درحال تعمیر و نگهداری است ممکن است سرور پشتیبان موقتاً درحال تعمیر و نگهداری باشد. کاربران «فضای ابری خصوصی و عمومی لبه‌ای»

دلیل: سرور اضافه‌بار دارد/سرور درحال نگهداری است

در Apigee Edge، خطای «۵۰۳ سرویس دردسترس نیست» می‌تواند از سرور زیرینه تحت هریک از شرایط زیر برگردانده شود:

  • سرور پشتیبان بیش‌ازحد بارگذاری شده/مشغول است و نمی‌تواند درخواست‌های جدید را مدیریت کند.
  • سرور زیرینه به‌دلیل نگهداری برای مدتی موقتاً قطع است.

تشخیص

برای تشخیص خطا، می‌توانید از هریک از سه روش زیر استفاده کنید:

  • ابزار ردیابی
  • گزارش‌های دسترسی NGINX
  • تماس مستقیم با سرور زیرینه

برای آشنایی با هر روش، روی برگه‌های زیر کلیک کنید.

ابزار ردیابی

  1. جلسه ردیابی را فعال کنید، و برای بازتولید مشکل، فراخوانی میانای برنامه‌سازی کاربردی را انجام دهید - 503 سرویس دردسترس نیست.
  2. یکی از درخواست‌های ناموفق را انتخاب کنید و ردیابی را بررسی کنید.
  3. در مراحل مختلف ردیابی پیمایش کنید و مکان خرابی را پیدا کنید.
  4. اگر متوجه شدید که خطای ۵۰۳ به‌عنوان پاسخ از سرور مقصد برگردانده می‌شود، دلیل خطای ۵۰۳ سرور مقصد است.

    در اینجا نماگرفتی از ردیابی نمونه نشان داده شده است که پاسخ «۵۰۳ سرویس دردسترس نیست» دریافتی از سرور مقصد را نشان می‌دهد:

  5. روی مرحله پاسخ دریافتی از سرور هدف کلیک کنید و بخش‌های «سرایندهای پاسخ» و «محتوای پاسخ» را بررسی کنید تا ببینید اطلاعات مفیدی دارند یا نه:
    • «سرایندهای پاسخ» ممکن است حاوی سراینده «سرور» باشد که نشان می‌دهد پاسخ خطا از کجا ارسال شده است.
    • «محتوای پاسخ» ممکن است حاوی اطلاعات بیشتری درباره دلیل ارسال کد پاسخ ۵۰۳ توسط سرور مقصد باشد.
  6. با بررسی مقادیر X-Apigee-fault-source و X-Apigee-fault-code در مرحله AX (داده‌های Analytics ضبط‌شده) در ردیابی بااستفاده از مراحل زیر، تأیید کنید که خطای ۵۰۳ از سرور مقصد می‌آید:
    1. روی فاز AX (داده‌های Analytics ضبط‌شده) همان‌طور که در نماگرفت زیر نشان داده شده است کلیک کنید:
    2. در «جزئیات فاز» به پایین پیمایش کنید و به بخش «سرایندهای پاسخ» بروید و مقادیر X-Apigee-fault-code و X-Apigee-fault-source را همان‌طور که در زیر نشان داده شده است تعیین کنید:
    3. اگر مقادیر X-Apigee-fault-source و X-Apigee-fault-code با مقادیر نشان‌داده‌شده در جدول زیر مطابقت داشته باشد، می‌توانید تأیید کنید که خطای ۵۰۳ از سرور مقصد می‌آید:
      سرایندهای پاسخ مقدار
      X-Apigee-fault-source هدف
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. بررسی کنید که آیا از زنجیره پروکسی استفاده می‌کنید، یعنی آیا سرور مقصد/نقطه پایانی مقصد درحال فراخوانی پروکسی دیگری در Apigee است یا نه. برای تعیین این مورد:
    1. به مرحله درخواست به سرور هدف ارسال شد برگردید و روی دکمه نمایش Curl کلیک کنید و نام مستعار میزبان سرور هدف را تعیین کنید.
    2. اگر نام مستعار میزبان سرور هدف به نام مستعار میزبان مجازی اشاره می‌کند، آنگاه زنجیره پروکسی است. در این مورد، باید همه مراحل بالا را برای پراکسی زنجیره‌ای تکرار کنید تا مشخص کنید که چه چیزی واقعاً باعث خطای «۵۰۳ سرویس دردسترس نیست» شده است. در این موارد، خطای «۵۰۳ سرویس دردسترس نیست» ممکن است در دیگر پراکسی‌های زنجیره‌ای در مراحل دیگر نیز رخ دهد که می‌توان آن را بااستفاده از این کتابچه نمایشی تشخیص داد.
    3. اگر نام مستعار میزبان سرور هدف به سرور زیرینه شما اشاره می‌کند، به وضوح بروید.

گزارش‌های دسترسی NGINX

همچنین می‌توانید به گزارش‌های دسترسی NGINX مراجعه کنید تا مشخص کنید که آیا کد وضعیت ۵۰۳ توسط سرور پشتیبان ارسال شده است یا خیر. این ویژگی به‌ویژه درصورتی مفید است که مشکل در گذشته رخ داده باشد یا مشکل متناوب باشد و نتوانید ردگیری را در رابط کاربری ضبط کنید. برای تعیین این اطلاعات از گزارش‌های دسترسی NGINX، از مراحل زیر استفاده کنید:

  1. گزارش‌های دسترسی NGINX را بررسی کنید.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. خطاهای ۵۰۳ را برای پراکسی API خاص در طول مدت مشخصی جستجو کنید (اگر مشکل در گذشته رخ داده است) یا درخواست‌هایی را که هنوز با خطای ۵۰۳ مواجه می‌شوند جستجو کنید.
  3. اگر خطای ۵۰۳ وجود دارد، بررسی کنید که آیا خطا از سرور پشتیبان می‌آید یا خیر. اگر مقادیر X-Apigee-fault-source و X-Apigee-fault-code با مقادیر نشان‌داده‌شده در جدول زیر مطابقت داشته باشد، خطای ۵۰۳ از سرور زیرینه می‌آید:
    سرایندهای پاسخ مقدار
    X-Apigee-fault-source هدف
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    در اینجا نمونه‌ای از ورودی نشان‌دهنده خطای ۵۰۳ ناشی از سرور مقصد آورده شده است:

  4. «پروکسی میانای برنامه‌سازی کاربردی» خاص را مرور کنید و مطمئن شوید که از زنجیره پروکسی استفاده می‌کنید، یعنی اگر سرور هدف/نقطه پایان هدف کارگزار دیگری را در Apigee فراخوانی نمی‌کند. اگر از زنجیره پروکسی استفاده می‌کنید، باید همه مراحل بالا را برای پروکسی زنجیره‌ای تکرار کنید تا مشخص کنید که چه چیزی واقعاً باعث خطای «۵۰۳ سرویس دردسترس نیست» شده است. در این موارد، ممکن است خطای «۵۰۳ سرویس دردسترس نیست» در دیگر پراکسی‌های زنجیره‌ای در مراحل دیگر نیز رخ دهد، که می‌توانید بااستفاده از این کتابچه نمایشی آن را تشخیص دهید.
  5. اگر تأیید کردید که از زنجیره پروکسی استفاده نمی‌کنید و خطای ۵۰۳ از سرور پشتیبان شما می‌آید، به راه‌حل بروید.

تماس با سرور زیرینه

می‌توانید مستقیماً با سرور زیرینه تماس بگیرید و تأیید کنید که همان پاسخ «۵۰۳ سرویس دردسترس نیست» را که هنگام درخواست ازطریق Apigee Edge دریافت کرده‌اید دریافت می‌کنید.

  1. مطمئن شوید که همه سرایندهای موردنیاز، پارامترهای پُرسمان، و اطلاعات اعتباری را که باید به‌عنوان بخشی از درخواست به سرور زیرینه ارسال شوند داشته باشید.
  2. اگر سرویس زیرینه به‌صورت عمومی دردسترس باشد، می‌توانید از فرمان curl، Postman، یا هر «کارخواه REST» دیگری استفاده کنید و API سرور زیرینه را مستقیماً فراخوانی کنید.
  3. اگر سرور زیرینه فقط از «پردازشگرهای پیام» دردسترس باشد، می‌توانید از دستور curl،‏ Postman، یا هر «کارخواه REST» دیگری استفاده کنید و API سرور زیرینه را مستقیماً از «پردازشگر پیام» فراخوانی کنید.
  4. تأیید کنید که سرویس پشتیبان واقعاً خطای «۵۰۳ سرویس دردسترس نیست» را برمی‌گرداند.

وضوح

اگر مطمئن شدید که خطای ۵۰۳ از سرور پشتیبان می‌آید، می‌توانید کارهای زیر را برای حل مشکل انجام دهید:

  • اگر مشکل به‌دلیل ازکارافتادن سرور زیرینه برای نگهداری ایجاد شده است، می‌توانید سرور زیرینه را پس‌از دوره نگهداری آنلاین کنید.
  • اگر مشکل به‌دلیل بار بیش‌ازحد سرور پشتیبان باشد، درصورتی‌که به سرور پشتیبان دسترسی دارید، مشکل را برطرف کنید. درغیراین‌صورت برای رفع مشکل باید با تیم سرور زیرینه خود همکاری کنید.

عیب‌یابی مشکلات بااستفاده از «پایش میانای برنامه‌سازی کاربردی»

پایش میانای برنامه‌سازی کاربردی به شما امکان می‌دهد تا مناطق مشکل‌دار را به‌سرعت جدا کنید تا خطاهای عملکرد و تأخیر و منبع آن‌ها را تشخیص دهید، مثلاً برنامه‌های توسعه‌دهنده، پراکسی‌های میانای برنامه‌سازی کاربردی، هدف‌های زیرینه، یا پلاتفرم میانای برنامه‌سازی کاربردی.

سناریو نمونه‌ای را گام‌به‌گام دنبال کنید که نحوه عیب‌یابی مشکلات 5xx را بااستفاده از «پایش API» برای میاناهای برنامه‌سازی کاربردی شما نشان می‌دهد. برای مثال، ممکن است بخواهید هشداری راه‌اندازی کنید تا وقتی تعداد خطاهای messaging.adaptors.http.flow.ErrorResponseCode از آستانه خاصی فراتر رفت به شما اطلاع داده شود.

باید اطلاعات تشخیص خرابی را جمع‌آوری کند

اگر مشکل حتی پس‌از دنبال کردن دستورالعمل‌های بالا برطرف نشد، لطفاً اطلاعات تشخیص سلامت زیر را جمع‌آوری کنید و سپس با پشتیبانی Apigee تماس بگیرید.

اگر کاربر فضای ابری عمومی هستید، اطلاعات زیر را ارائه دهید:

  • Organization Name
  • نام محیط
  • نام پراکسی میانای برنامه‌سازی کاربردی
  • فرمان curl کامل برای بازتولید خطای ۵۰۳
  • فایل ردیابی حاوی درخواست‌های دارای خطای «۵۰۳ سرویس دردسترس نیست»
  • اگر خطاهای ۵۰۳ درحال‌حاضر رخ نمی‌دهند، بازه زمانی را با اطلاعات منطقه زمانی که خطاهای ۵۰۳ در گذشته رخ داده‌اند ارائه دهید.

اگر کاربر ابر خصوصی هستید، اطلاعات زیر را ارائه دهید:

  • پیام خطای کامل مشاهده‌شده برای درخواست‌های ناموفق.
  • سازمان، نام محیط، و نام پراکسی API که خطاهای ۵۰۳ را برای آن مشاهده می‌کنید.
  • بسته پراکسی میانای برنامه‌سازی کاربردی.
  • فایل ردیابی حاوی درخواست‌های دارای خطای «۵۰۳ سرویس دردسترس نیست».
  • گزارش‌های دسترسی NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • گزارش‌های «پردازشگر پیام».
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • دوره زمانی با اطلاعات منطقه زمانی که خطاهای ۵۰۳ رخ داده است.