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

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

วิดีโอ

ดูวิดีโอต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการแก้ไขข้อผิดพลาด 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 ไม่พร้อมใช้งานมีดังนี้

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

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

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

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

การวินิจฉัย

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

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

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

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

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

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

  5. คลิกระยะการตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย แล้วไปที่ส่วน ส่วนหัวการตอบกลับและเนื้อหาการตอบกลับเพื่อดูว่ามีข้อมูลที่เป็นประโยชน์หรือไม่
    • ส่วนหัวการตอบกลับอาจมีส่วนหัวของเซิร์ฟเวอร์ซึ่งระบุแหล่งที่มาของการตอบกลับข้อผิดพลาด
    • เนื้อหาการตอบกลับอาจมีข้อมูลเพิ่มเติมเกี่ยวกับเหตุผลที่เซิร์ฟเวอร์เป้าหมายส่งรหัสการตอบกลับ 503
  6. ยืนยันว่าข้อผิดพลาด 503 มาจากเซิร์ฟเวอร์เป้าหมายโดยตรวจสอบค่าของ X-Apigee-fault-source และ X-Apigee-fault-code ในระยะ AX (บันทึกข้อมูล Analytics) ในการติดตามโดยใช้ขั้นตอนที่ระบุไว้ด้านล่าง
    1. คลิกระยะ AX (บันทึกข้อมูล Analytics) ดังที่แสดงในภาพหน้าจอด้านล่าง
    2. เลื่อนลงไปที่ส่วน Response Headers และระบุค่าของ 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. กลับไปที่เฟสคำขอที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย แล้วคลิกปุ่มแสดง Curl และกำหนดชื่อแทนโฮสต์ของเซิร์ฟเวอร์เป้าหมาย
    2. หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปที่ชื่อแทนโฮสต์เสมือน แสดงว่าเป็นเชนพร็อกซี ในกรณีนี้ คุณต้องทำตามขั้นตอนข้างต้นทั้งหมดซ้ำสำหรับพร็อกซีที่ผูกไว้จนกว่าจะพบสาเหตุของข้อผิดพลาด 503 ไม่พร้อมใช้งาน ในกรณีดังกล่าว 503 บริการไม่พร้อมใช้งาน อาจเกิดขึ้นในพร็อกซีแบบเชนอื่นๆ ในระยะอื่นด้วย ซึ่งสามารถวินิจฉัยได้โดยใช้ Playbook นี้
    3. หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปที่เซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่การแก้ไข

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

นอกจากนี้ คุณยังดูบันทึก lccess ของ 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 Service Unavailable อาจเกิดขึ้นในพร็อกซีแบบเชนอื่นๆ ในระยะอื่นด้วย ซึ่งคุณจะวินิจฉัยได้โดยใช้ Playbook นี้
  5. หากคุณยืนยันว่าไม่ได้ใช้เชนพร็อกซีและข้อผิดพลาด 503 มาจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่การแก้ไข

เรียกไปยังเซิร์ฟเวอร์แบ็กเอนด์

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

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

ความละเอียด

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

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

วินิจฉัยปัญหาโดยใช้ API Monitoring

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

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

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

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

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

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

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

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