คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ HTTP 504 พร้อมข้อความ "Gateway Timeout" ในการตอบกลับการเรียก API
การตอบกลับข้อผิดพลาดนี้บ่งชี้ว่าไคลเอ็นต์ไม่ได้รับการตอบกลับจาก Apigee Edge หรือเซิร์ฟเวอร์แบ็กเอนด์ในเวลาที่เหมาะสมระหว่างการดำเนินการเรียก API
ข้อความแสดงข้อผิดพลาด
แอปพลิเคชันไคลเอ็นต์ได้รับโค้ดตอบกลับต่อไปนี้
HTTP/1.1 504 Gateway Timeout
รหัสนี้อาจตามด้วยข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความด้านล่าง
<html> <head><title>504 Gateway Timeout</title></head> <body bgcolor="white"> <center><h1>504 Gateway Timeout</h1></center> </body> </html>
สาเหตุที่ทำให้เกิดการหมดเวลาของเกตเวย์
เส้นทางทั่วไปสำหรับคำขอ API ที่ส่งผ่าน Apigee Edge คือ ไคลเอ็นต์ -> เราเตอร์ -> Message Processor -> เซิร์ฟเวอร์แบ็กเอนด์ ดังที่แสดงในรูปภาพด้านล่าง

แอปพลิเคชันไคลเอ็นต์ เราเตอร์ และ Message Processor ได้รับการกำหนดค่าด้วยค่าการหมดเวลาที่เหมาะสม Apigee Edge คาดว่าจะได้รับการตอบกลับสำหรับคำขอ API ทุกรายการภายในระยะเวลาที่อิงตามค่าการหมดเวลา หากไม่ได้รับการตอบกลับภายในระยะเวลาที่ระบุ ระบบจะแสดงการตอบกลับ 504 Gateway Timeout
สาเหตุที่เป็นไปได้
ใน Apigee Edge สาเหตุทั่วไปของการตอบกลับ 504 Gateway Timeout จากเซิร์ฟเวอร์แบ็กเอนด์คือ
| สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาสำหรับ |
|---|---|---|
| เซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วย 504 Gateway Timeout | เซิร์ฟเวอร์แบ็กเอนด์หมดเวลาและแสดงการตอบกลับ 504 Gateway Timeout ไปยัง Message Processor | ผู้ใช้ Edge Private และ Public Cloud |
เซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วย 504 Gateway Timeout
เซิร์ฟเวอร์แบ็กเอนด์อาจตอบกลับด้วยรหัสการตอบกลับ HTTP 504 Gateway Timeout
การวินิจฉัย
ส่วนนี้จะอธิบายวิธีวินิจฉัย 504 Gateway Timeout อย่างถูกต้อง โดยจะแสดงขั้นตอนสำหรับผู้ใช้ Private และ Public Cloud
ขั้นตอนที่ 1: ใช้ Trace (ผู้ใช้ Private และ Public Cloud)
- เปิดใช้ Trace ใน UI ของ Apigee สำหรับ API ที่ได้รับผลกระทบ
- ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
- หากคำขอ API ที่ล้มเหลวแสดงการตอบกลับ 504 จากเซิร์ฟเวอร์แบ็กเอนด์ใน Trace, แสดงว่าสาเหตุของ 504 Gateway Timeout คือเซิร์ฟเวอร์แบ็กเอนด์
- หากต้องการดูเวลาการตอบกลับ ให้คลิกเฟส Response received from target server
ใน Trace ในตัวอย่างที่แสดง เวลาที่ผ่านไปคือ 60004 มิลลิวินาที

ส่วนรายละเอียดเฟสจะแสดงข้อมูลเพิ่มเติม ดังนี้
- ไฮไลต์การตอบกลับ 504 Gateway Timeout ที่ได้รับจากเซิร์ฟเวอร์แบ็กเอนด์
- ส่วนเนื้อหาการตอบกลับ จะแสดงเนื้อหาทั้งหมดของการตอบกลับจาก เซิร์ฟเวอร์แบ็กเอนด์ ดังที่กล่าวไว้ก่อนหน้านี้ รูปแบบและเนื้อหาของเพย์โหลดการตอบกลับอาจแตกต่างกันไป ตามการติดตั้งใช้งานเซิร์ฟเวอร์แบ็กเอนด์
- ส่วนส่วนหัวการตอบกลับ > เซิร์ฟเวอร์ อาจระบุแหล่งที่มาของการตอบกลับ
- หากต้องการดูข้อมูล Analytics และยืนยันการวินิจฉัย ให้คลิกเฟส Analytics Data Recorded
ใน Trace ดังที่แสดงในรูปภาพด้านล่าง

ส่วนส่วนหัวการตอบกลับ ของรายละเอียดเฟสจะแสดงค่าของ
X-Apigee-fault-codeและX-Apigee-fault-sourceดังที่แสดงใน รูปภาพด้านล่าง
หากช่องเหล่านี้มีค่าที่แสดงในตารางด้านล่าง แสดงว่าการตอบกลับข้อผิดพลาด 504 มาจากเซิร์ฟเวอร์แบ็กเอนด์:
ส่วนหัวการตอบกลับ ค่า X-Apigee-fault-source target X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
ตรวจสอบการเชื่อมโยงพร็อกซี ทำตามขั้นตอนต่อไปนี้เพื่อดูว่าเซิร์ฟเวอร์แบ็กเอนด์กำลังเรียกใช้พร็อกซีอื่น
ใน Apigee:
- กลับไปที่เฟส Request sent to target server แล้วคลิกปื้น Show Curl เพื่อดูชื่อแทนโฮสต์ของเซิร์ฟเวอร์แบ็กเอนด์
- หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์แบ็กเอนด์ชี้ไปยังชื่อแทนโฮสต์เสมือน แสดงว่ามีการเชื่อมโยงพร็อกซีอยู่ใน ที่ ทำตามขั้นตอนด้านบนซ้ำสำหรับพร็อกซีที่เชื่อมโยงแต่ละรายการเพื่อวินิจฉัยสาเหตุของการตอบกลับข้อผิดพลาด 504 Gateway Timeout คุณสามารถวินิจฉัยการหมดเวลาของ 504 Gateway ที่เกิดขึ้นในพร็อกซีที่เชื่อมโยงในขั้นตอนอื่นๆ ของ วงจรคำขอ/การตอบกลับได้โดยใช้ เพลย์บุ๊กนี้
- หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์แบ็กเอนด์ชี้ไปยังเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ การแก้ปัญหา
ขั้นตอนที่ 2: เรียกใช้ API ของเซิร์ฟเวอร์แบ็กเอนด์โดยตรง (ผู้ใช้ Public และ Private Cloud)
เรียกใช้เซิร์ฟเวอร์แบ็กเอนด์โดยตรงเพื่อยืนยันลักษณะการทำงานของการตอบกลับ 504 Gateway Timeout แบบเดียวกันที่พบ เมื่อส่งคำขอผ่าน Apigee Edge
- ตรวจสอบว่าคุณมีส่วนหัว พารามิเตอร์การค้นหา และข้อมูลเข้าสู่ระบบที่จำเป็นทั้งหมดเพื่อ ส่งไปยังเซิร์ฟเวอร์แบ็กเอนด์เป็นส่วนหนึ่งของคำขอ
- หากบริการแบ็กเอนด์เข้าถึงได้แบบสาธารณะ คุณสามารถใช้คำสั่ง
curl, Postman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API ของเซิร์ฟเวอร์แบ็กเอนด์โดยตรง - หากเซิร์ฟเวอร์แบ็กเอนด์เข้าถึงได้จาก Message Processor เท่านั้น ให้ใช้คำสั่ง
curl, Postman หรือไคลเอ็นต์ REST อื่นๆ เพื่อเรียกใช้ API ของเซิร์ฟเวอร์แบ็กเอนด์โดยตรงจาก Message Processor - หากบริการแบ็กเอนด์แสดงการตอบกลับ 504 Gateway Timeout ให้ไปที่ การแก้ปัญหา
ขั้นตอนที่ 3: ตรวจสอบบันทึกการเข้าถึงของ NGINX (ผู้ใช้ Private Cloud เท่านั้น)
บันทึกการเข้าถึงของ NGINX สามารถช่วยระบุว่าการตอบกลับข้อผิดพลาด 504 ส่งมาจากเซิร์ฟเวอร์แบ็กเอนด์หรือไม่ ซึ่งจะเป็นประโยชน์อย่างยิ่งหากปัญหาเกิดขึ้นในอดีต เกิดขึ้นเป็นระยะๆ หรือบันทึกใน Trace ไม่ได้ ทำตามขั้นตอนต่อไปนี้เพื่อตรวจสอบบันทึกการเข้าถึงของ NGINX
- ดูบันทึกการเข้าถึงของ NGINX โดยใช้คำสั่งนี้
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- ตรวจสอบการตอบกลับข้อผิดพลาด 504 สำหรับพร็อกซี API ที่ได้รับผลกระทบ คุณสามารถตรวจสอบระยะเวลาที่เฉพาะเจาะจงได้ หากปัญหาเกิดขึ้นในอดีต หรือดูว่าคำขอจะยังคงล้มเหลวด้วยการตอบกลับข้อผิดพลาด 504 หรือไม่
- หากมีการตอบกลับข้อผิดพลาด 504 ให้ดูว่าการตอบกลับข้อผิดพลาดมาจาก เซิร์ฟเวอร์แบ็กเอนด์หรือไม่
- ตรวจสอบพร็อกซี API ที่ได้รับผลกระทบเพื่อดูการเชื่อมโยงพร็อกซี เช่น เซิร์ฟเวอร์แบ็กเอนด์/ปลายทางเป้าหมายกำลังเรียกใช้พร็อกซีอื่นใน Apigee หากพร็อกซี API ใช้ การเชื่อมโยงพร็อกซี ให้ทำตามขั้นตอนด้านบนซ้ำสำหรับพร็อกซีที่เชื่อมโยงแต่ละรายการเพื่อวินิจฉัยสาเหตุของการตอบกลับข้อผิดพลาด 504 Gateway Timeout คุณสามารถวินิจฉัยการหมดเวลาของ 504 Gateway ที่เกิดขึ้นในพร็อกซีที่เชื่อมโยงในขั้นตอนอื่นๆ ได้โดยใช้ เพลย์บุ๊กนี้
- หากไม่มี การเชื่อมโยงพร็อกซี และการตอบกลับข้อผิดพลาด 504 มาจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ การแก้ปัญหา
รูปภาพด้านล่างเป็นตัวอย่างรายการบันทึกของ NGINX ที่แสดงการตอบกลับข้อผิดพลาด 504 ซึ่งเกิดจาก เซิร์ฟเวอร์เป้าหมาย:

หากช่อง X-Apigee-fault-source และ X-Apigee-fault-code มีค่าที่แสดงในตารางด้านล่าง แสดงว่าการตอบกลับ 504 มาจากเซิร์ฟเวอร์แบ็กเอนด์
| ส่วนหัวการตอบกลับ | ค่า |
|---|---|
| X-Apigee-fault-source | target |
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
ขั้นตอนที่ 4: ใช้การตรวจสอบ API (ผู้ใช้ Public Cloud เท่านั้น)
การตรวจสอบ API ช่วยให้คุณแยกพื้นที่ที่มีปัญหา ได้อย่างรวดเร็วเพื่อวินิจฉัยข้อผิดพลาด ประสิทธิภาพ และปัญหาความหน่วง รวมถึงแหล่งที่มาของปัญหา เช่น แอปของนักพัฒนาแอป พร็อกซี API เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API
ดูสถานการณ์ตัวอย่าง ที่แสดงวิธีแก้ปัญหา 5xx เกี่ยวกับ API โดยใช้การตรวจสอบ API เช่น ตั้งค่าการแจ้งเตือนเพื่อแจ้งผู้ดูแลระบบเมื่อจำนวนรหัสสถานะ 504 เกินเกณฑ์ที่กำหนด
ความละเอียด
คุณสามารถใช้ขั้นตอนการวินิจฉัยที่ระบุไว้ข้างต้นเพื่อทำงานร่วมกับทีมเซิร์ฟเวอร์แบ็กเอนด์ในการแก้ไข ปัญหาในเซิร์ฟเวอร์แบ็กเอนด์ ซึ่งอาจรวมถึงการปรับค่าการหมดเวลาในเซิร์ฟเวอร์แบ็กเอนด์หรือ ค่าการหมดเวลาในตัวปรับสมดุลโหลดที่อยู่ด้านหน้าเซิร์ฟเวอร์เป้าหมาย
รวบรวมข้อมูลการวินิจฉัย
หากยังพบปัญหาอยู่ โปรดแชร์ข้อมูลการวินิจฉัยต่อไปนี้กับ ทีมสนับสนุนของ Apigee
หากคุณเป็นผู้ใช้ Public Cloud โปรดระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- คำสั่ง
curlแบบสมบูรณ์ที่ใช้ในการจำลองการตอบกลับข้อผิดพลาด 504 - ไฟล์ Trace ที่มีคำขอ API ซึ่งได้รับการตอบกลับข้อผิดพลาด 504 Gateway Timeout
หากคุณเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้
- ข้อความแสดงข้อผิดพลาดแบบสมบูรณ์ที่พบสำหรับคำขอที่ล้มเหลว
- ชื่อสภาพแวดล้อม
- ชุดรวมพร็อกซี API
- ไฟล์ Trace ที่มีคำขอ API ซึ่งได้รับการตอบกลับข้อผิดพลาด 504 Gateway Timeout
- บันทึกการเข้าถึงของ 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