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 สาธารณะและ Private Cloud
เซิร์ฟเวอร์อยู่ระหว่างการบำรุงรักษา เซิร์ฟเวอร์แบ็กเอนด์อาจอยู่ระหว่างการบำรุงรักษาชั่วคราว ผู้ใช้ Edge สาธารณะและ Private Cloud

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

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

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

การวินิจฉัย

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

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

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

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

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

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

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

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

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

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

ความละเอียด

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

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

วิเคราะห์ปัญหาโดยใช้การตรวจสอบ API

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

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

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

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

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

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

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

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