503 ไม่พร้อมให้บริการ - เซิร์ฟเวอร์แบ็กเอนด์

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

วิดีโอ

ดูวิดีโอต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ปัญหาข้อผิดพลาด 503 ไม่พร้อมให้บริการ

วิดีโอ คำอธิบาย
ข้อผิดพลาด 503 ไม่พร้อมให้บริการจากเซิร์ฟเวอร์แบ็กเอนด์ ดูข้อมูลเกี่ยวกับสิ่งต่อไปนี้
  • ข้อมูลเบื้องต้นเกี่ยวกับข้อผิดพลาด 503 ไม่พร้อมให้บริการใน Apigee Edge
  • การแก้ปัญหาและแก้ไขข้อผิดพลาด 503 ไม่พร้อมให้บริการแบบเรียลไทม์จาก เซิร์ฟเวอร์แบ็กเอนด์

ลักษณะปัญหา

แอปพลิเคชันไคลเอ็นต์ได้รับการตอบกลับ 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 หมายความว่าปัจจุบันเซิร์ฟเวอร์ไม่สามารถจัดการคำขอขาเข้าได้ โดยปกติแล้วข้อผิดพลาดนี้จะเกิดขึ้นเนื่องจากเซิร์ฟเวอร์ไม่ว่างหรือหยุดทำงานชั่วคราวเพื่อบำรุงรักษา

สาเหตุที่เป็นไปได้ของการตอบกลับ 503 Service Unavailable มีดังนี้

สาเหตุ คำอธิบาย ผู้ที่สามารถทำตามขั้นตอนการแก้ปัญหา
เซิร์ฟเวอร์ทำงานหนักเกินไป เซิร์ฟเวอร์แบ็กเอนด์ทำงานหนักเกินไปหรือเกินความจุ และไม่สามารถจัดการคำขอไคลเอ็นต์ขาเข้าใหม่ได้ ผู้ใช้ Edge Public และ Private Cloud
เซิร์ฟเวอร์อยู่ระหว่างการบำรุงรักษา เซิร์ฟเวอร์แบ็กเอนด์อาจอยู่ระหว่างการบำรุงรักษาชั่วคราว ผู้ใช้ Edge Public และ Private Cloud

สาเหตุ: เซิร์ฟเวอร์ทำงานหนักเกินไป/เซิร์ฟเวอร์อยู่ระหว่างการบำรุงรักษา

ใน Apigee Edge ระบบอาจแสดงข้อผิดพลาด 503 ไม่พร้อมให้บริการจากเซิร์ฟเวอร์แบ็กเอนด์ ในกรณีต่อไปนี้

  • เซิร์ฟเวอร์แบ็กเอนด์ทำงานหนักเกินไป/ไม่ว่างและไม่สามารถจัดการคำขอใหม่ได้
  • เซิร์ฟเวอร์แบ็กเอนด์หยุดทำงานชั่วคราวเนื่องจากการบำรุงรักษา

การวินิจฉัย

หากต้องการวินิจฉัยข้อผิดพลาด คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้

  • เครื่องมือติดตาม
  • บันทึกการเข้าถึง NGINX
  • การเรียกเซิร์ฟเวอร์แบ็กเอนด์โดยตรง

คลิกแท็บด้านล่างเพื่อดูข้อมูลเกี่ยวกับแต่ละวิธี

เครื่องมือติดตาม

  1. เปิดใช้เซสชันการติดตาม trace, และทำการเรียก API เพื่อจำลองปัญหา - 503 ไม่พร้อมให้บริการ
  2. เลือกคำขอที่ล้มเหลวรายการใดรายการหนึ่ง แล้วตรวจสอบการติดตาม
  3. ดูขั้นตอนต่างๆ ของการติดตามและค้นหาตำแหน่งที่เกิดความล้มเหลว
  4. หากพบว่าระบบแสดงข้อผิดพลาด 503 เป็นการตอบกลับจากเซิร์ฟเวอร์เป้าหมาย แสดงว่าสาเหตุของข้อผิดพลาด 503 คือเซิร์ฟเวอร์เป้าหมาย

    นี่คือภาพหน้าจอการติดตามตัวอย่างที่แสดงการตอบกลับ 503 ไม่พร้อมให้บริการที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย

  5. คลิกขั้นตอนการตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย แล้วดูส่วนหัวของการตอบกลับและเนื้อหาของการตอบกลับเพื่อดูว่ามีข้อมูลที่เป็นประโยชน์หรือไม่
    • ส่วนหัวของการตอบกลับอาจมีส่วนหัวของเซิร์ฟเวอร์ ซึ่งระบุตำแหน่งที่ส่งการตอบกลับข้อผิดพลาด
    • เนื้อหาของการตอบกลับอาจมีข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุที่ เซิร์ฟเวอร์เป้าหมายส่งโค้ดตอบกลับ 503
  6. ยืนยันว่าข้อผิดพลาด 503 มาจากเซิร์ฟเวอร์เป้าหมายโดยตรวจสอบ ค่าของ X-Apigee-fault-source และ X-Apigee-fault-code ในขั้นตอน AX (บันทึกข้อมูลวิเคราะห์) ในการติดตามโดยใช้ขั้นตอนด้านล่าง:
    1. คลิกขั้นตอน AX (บันทึกข้อมูลวิเคราะห์) ดังที่แสดงในภาพหน้าจอด้านล่าง:
    2. เลื่อนลงไปที่ส่วนรายละเอียดขั้นตอนไปยังส่วนหัวของการตอบกลับ และกำหนดค่า ของ X-Apigee-fault-code และ X-Apigee-fault-source ดังที่แสดงด้านล่าง:
    3. หากค่าของ X-Apigee-fault-source และ X-Apigee-fault-code ตรงกับค่าที่แสดงในตารางด้านล่าง คุณจะยืนยันได้ว่าข้อผิดพลาด 503 มาจากเซิร์ฟเวอร์เป้าหมาย
      ส่วนหัวของการตอบกลับ ค่า
      X-Apigee-fault-source เป้าหมาย
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. ตรวจสอบว่าคุณใช้การเชื่อมโยงพร็อกซีหรือไม่ เช่น หากเซิร์ฟเวอร์เป้าหมาย/ปลายทางเป้าหมายกำลัง เรียกใช้พร็อกซีอื่นใน Apigee วิธีตรวจสอบมีดังนี้
    1. กลับไปที่ขั้นตอนคำขอที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย แล้ว คลิกปุ่ม Show Curl และกำหนดนามแฝงโฮสต์ของเซิร์ฟเวอร์เป้าหมาย
    2. หากนามแฝงโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปยังนามแฝงโฮสต์เสมือน แสดงว่าเป็นการเชื่อมโยงพร็อกซี ในกรณีนี้ คุณต้องทำซ้ำขั้นตอนทั้งหมดข้างต้นสำหรับพร็อกซีที่เชื่อมโยง จนกว่าจะทราบสาเหตุที่ทำให้เกิดข้อผิดพลาด 503 ไม่พร้อมให้บริการ ในกรณีเหล่านี้ ข้อผิดพลาด 503 ไม่พร้อมให้บริการอาจเกิดขึ้นในพร็อกซีที่เชื่อมโยงอื่นๆ ในขั้นตอนอื่นๆ ด้วย ซึ่งคุณสามารถวินิจฉัยได้โดยใช้ เพลย์บุ๊กนี้
    3. หากนามแฝงโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปยังเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ ส่วนความละเอียด

บันทึกการเข้าถึง NGINX

นอกจากนี้ คุณยังดูบันทึกการเข้าถึง NGINX เพื่อตรวจสอบว่าเซิร์ฟเวอร์แบ็กเอนด์ส่งรหัสสถานะ 503 หรือไม่ ซึ่งจะเป็นประโยชน์อย่างยิ่งหากปัญหาเกิดขึ้นในอดีต หรือหากปัญหาเกิดขึ้นเป็นครั้งคราวและคุณไม่สามารถบันทึกการติดตามใน UI ได้ ทำตามขั้นตอนต่อไปนี้เพื่อดูข้อมูลนี้จากบันทึกการเข้าถึง NGINX

  1. ตรวจสอบบันทึกการเข้าถึง NGINX
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. ค้นหาข้อผิดพลาด 503 สำหรับพร็อกซี API ที่เฉพาะเจาะจงในช่วงเวลาที่กำหนด (หากปัญหาเกิดขึ้นในอดีต) หรือสำหรับคำขอที่ยังคงล้มเหลวด้วยข้อผิดพลาด 503
  3. หากมีข้อผิดพลาด 503 ให้ตรวจสอบว่าข้อผิดพลาดมาจากเซิร์ฟเวอร์แบ็กเอนด์หรือไม่ หากค่าของ X-Apigee-fault-source และ X-Apigee-fault-code ตรงกับ ค่าที่แสดง ในตารางด้านล่าง แสดงว่าข้อผิดพลาด 503 มาจากเซิร์ฟเวอร์แบ็กเอนด์
    ส่วนหัวของการตอบกลับ ค่า
    X-Apigee-fault-source เป้าหมาย
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    นี่คือรายการตัวอย่างที่แสดงข้อผิดพลาด 503 ที่เกิดจากเซิร์ฟเวอร์เป้าหมาย

  4. ตรวจสอบพร็อกซี API ที่เฉพาะเจาะจงและตรวจสอบว่าคุณใช้ การเชื่อมโยงพร็อกซี หรือไม่ เช่น หากเซิร์ฟเวอร์เป้าหมาย/ปลายทางเป้าหมายไม่ได้เรียกใช้พร็อกซีอื่นใน Apigee หากคุณใช้ การเชื่อมโยงพร็อกซี คุณต้องทำซ้ำขั้นตอนทั้งหมดข้างต้นสำหรับพร็อกซีที่เชื่อมโยงจนกว่า จะทราบสาเหตุที่ทำให้เกิดข้อผิดพลาด 503 ไม่พร้อมให้บริการ ในกรณีเหล่านี้ ข้อผิดพลาด 503 ไม่พร้อมให้บริการอาจเกิดขึ้นในพร็อกซีที่เชื่อมโยงอื่นๆ ในขั้นตอนอื่นๆ ด้วย ซึ่งคุณสามารถวินิจฉัยได้โดยใช้เพลย์บุ๊กนี้
  5. หากยืนยันว่าคุณไม่ได้ใช้การเชื่อมโยงพร็อกซี และข้อผิดพลาด 503 มาจาก เซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ส่วนความละเอียด

การเรียกเซิร์ฟเวอร์แบ็กเอนด์

คุณสามารถเรียกเซิร์ฟเวอร์แบ็กเอนด์โดยตรงและยืนยันว่าคุณได้รับการตอบกลับ 503 ไม่พร้อมให้บริการแบบเดียวกับที่ได้รับเมื่อมีการส่งคำขอผ่าน Apigee Edge

  1. ตรวจสอบว่าคุณมีส่วนหัว พารามิเตอร์การค้นหา และข้อมูลเข้าสู่ระบบทั้งหมดที่ ต้องส่งไปยังเซิร์ฟเวอร์แบ็กเอนด์เป็นส่วนหนึ่งของคำขอ
  2. หากบริการแบ็กเอนด์เข้าถึงได้แบบสาธารณะ คุณสามารถใช้คำสั่ง curl, Postman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API ของเซิร์ฟเวอร์แบ็กเอนด์โดยตรง
  3. หากเซิร์ฟเวอร์แบ็กเอนด์เข้าถึงได้จาก Message Processor เท่านั้น คุณสามารถใช้คำสั่ง curl, Postman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API ของเซิร์ฟเวอร์แบ็กเอนด์โดยตรงจาก Message Processor
  4. ตรวจสอบว่าบริการแบ็กเอนด์แสดงข้อผิดพลาด 503 ไม่พร้อมให้บริการจริง

ความละเอียด

หากคุณยืนยันว่าข้อผิดพลาด 503 มาจากเซิร์ฟเวอร์แบ็กเอนด์ คุณสามารถทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหา

  • หากปัญหาเกิดจากเซิร์ฟเวอร์แบ็กเอนด์หยุดทำงานเพื่อบำรุงรักษา คุณสามารถนำเซิร์ฟเวอร์แบ็กเอนด์กลับมาออนไลน์ได้หลังจากช่วงเวลาบำรุงรักษา
  • หากปัญหาเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ทำงานหนักเกินไป ให้ แก้ไขปัญหาหากคุณมีสิทธิ์เข้าถึงเซิร์ฟเวอร์แบ็กเอนด์ หรือคุณอาจต้องทำงานร่วมกับทีมเซิร์ฟเวอร์แบ็กเอนด์เพื่อแก้ไขปัญหา

วินิจฉัยปัญหาโดยใช้การตรวจสอบ API

การตรวจสอบ API ช่วยให้คุณแยก พื้นที่ที่มีปัญหาได้อย่างรวดเร็วเพื่อวินิจฉัยปัญหาเกี่ยวกับข้อผิดพลาด ประสิทธิภาพ และเวลาในการตอบสนอง รวมถึงแหล่งที่มาของปัญหา เช่น แอปของนักพัฒนาแอป พร็อกซี API เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API

ดู สถานการณ์ตัวอย่างที่แสดงวิธีแก้ปัญหา 5xx กับ API โดยใช้การตรวจสอบ API เช่น คุณอาจต้องการตั้งค่าการแจ้งเตือนเพื่อรับการแจ้งเตือนเมื่อจำนวนข้อผิดพลาด messaging.adaptors.http.flow.ErrorResponseCode เกินเกณฑ์ที่กำหนด

ข้อมูลการวินิจฉัยที่ต้องรวบรวม

หากยังพบปัญหาเดิมอยู่แม้จะทำตามวิธีการข้างต้นแล้ว โปรดรวบรวมข้อมูลการวินิจจฉัยต่อไปนี้ แล้วติดต่อ ทีมสนับสนุนของ Apigee

หากคุณเป็นผู้ใช้ Public Cloud โปรดระบุข้อมูลต่อไปนี้

  • ชื่อองค์กร
  • ชื่อสภาพแวดล้อม
  • ชื่อพร็อกซี API
  • คำสั่ง curl ที่สมบูรณ์เพื่อจำลองข้อผิดพลาด 503
  • ไฟล์การติดตามที่มีคำขอซึ่งมีข้อผิดพลาด 503 ไม่พร้อมให้บริการ
  • หากข้อผิดพลาด 503 ไม่เกิดขึ้นในปัจจุบัน โปรดระบุช่วงเวลาพร้อมข้อมูลเขตเวลา เมื่อข้อผิดพลาด 503 เกิดขึ้นในอดีต

หากคุณเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้

  • ข้อความแสดงข้อผิดพลาดทั้งหมดที่พบสำหรับคำขอที่ล้มเหลว
  • ชื่อองค์กร ชื่อสภาพแวดล้อม และชื่อพร็อกซี API ที่คุณพบข้อผิดพลาด 503
  • ชุดรวมพร็อกซี API
  • ไฟล์การติดตามที่มีคำขอซึ่งมีข้อผิดพลาด 503 ไม่พร้อมให้บริการ
  • บันทึกการเข้าถึง NGINX
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • บันทึก Message Processor
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • ระยะเวลาพร้อมข้อมูลเขตเวลาเมื่อข้อผิดพลาด 503 เกิดขึ้น