คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ HTTP 504 พร้อมข้อความ "หมดเวลาของเกตเวย์" เพื่อตอบสนองการเรียก 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 จะได้รับการกำหนดค่าด้วยค่าระยะหมดเวลาที่เหมาะสม Apigee Edge คาดว่าจะตอบกลับคำขอ API ทุกรายการภายในระยะเวลาที่อิงตามค่าการหมดเวลา หากไม่ได้รับการตอบกลับภายในระยะเวลาที่กำหนด ระบบจะแสดงผลการตอบสนองการหมดเวลาของเกตเวย์ 504
สาเหตุที่เป็นไปได้
ใน Apigee Edge สาเหตุทั่วไปของการตอบกลับเกตเวย์ 504 เกตเวย์หมดเวลาจากเซิร์ฟเวอร์แบ็กเอนด์คือ
สาเหตุ | คำอธิบาย | วิธีแก้ปัญหาสำหรับ |
---|---|---|
เซิร์ฟเวอร์แบ็กเอนด์ที่ตอบสนองด้วยเกตเวย์ 504 หมดเวลา | เซิร์ฟเวอร์แบ็กเอนด์จะหมดเวลาและแสดงการตอบสนองของเกตเวย์ 504 หมดเวลาไปยังตัวประมวลผลข้อความ | ผู้ใช้ Edge Private และระบบคลาวด์สาธารณะ |
เซิร์ฟเวอร์แบ็กเอนด์ที่ตอบสนองด้วยเกตเวย์ 504 หมดเวลา
เซิร์ฟเวอร์แบ็กเอนด์อาจตอบกลับด้วยรหัสตอบกลับ HTTP ของเกตเวย์หมดเวลา 504
การวินิจฉัย
ส่วนนี้จะอธิบายวิธีการวินิจฉัยระยะหมดเวลาของเกตเวย์ 504 อย่างถูกต้อง ขั้นตอนสำหรับทั้งส่วนบุคคลและ ระบบจะแสดงผู้ใช้ระบบคลาวด์สาธารณะ
ขั้นตอนที่ 1: การใช้การติดตาม (ผู้ใช้ระบบคลาวด์ส่วนตัวและระบบคลาวด์สาธารณะ)
- เปิดใช้Traceใน Apigee UI สำหรับ API ที่ได้รับผลกระทบ
- ส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
- หากคำขอ API ที่ล้มเหลวแสดงการตอบกลับ 504 จากเซิร์ฟเวอร์แบ็กเอนด์ในการติดตาม สาเหตุของระยะหมดเวลาของเกตเวย์ 504 ก็คือเซิร์ฟเวอร์แบ็กเอนด์
- หากต้องการดูเวลาในการตอบสนอง ให้คลิกการตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย
ใน Trace ในตัวอย่างที่แสดง เวลาที่ผ่านไปคือ 60, 004 มิลลิวินาที:
ส่วนรายละเอียดระยะจะมีข้อมูลเพิ่มเติมดังต่อไปนี้
- โดยจะไฮไลต์การตอบกลับระยะหมดเวลาของเกตเวย์ 504 ที่ได้รับจากเซิร์ฟเวอร์แบ็กเอนด์
- ส่วนเนื้อหาของการตอบกลับจะแสดงเนื้อหาทั้งหมดของคำตอบจาก เซิร์ฟเวอร์แบ็กเอนด์ ตามที่ระบุไว้ก่อนหน้า รูปแบบและเนื้อหาของเพย์โหลดการตอบกลับอาจแตกต่างกัน ที่ขึ้นอยู่กับการใช้งานเซิร์ฟเวอร์แบ็กเอนด์
- ส่วนหัวการตอบกลับ > ส่วนเซิร์ฟเวอร์อาจระบุที่มาของการตอบกลับ
- หากต้องการดูข้อมูล Analytics และยืนยันการวิเคราะห์ ให้คลิกข้อมูล Analytics ที่บันทึกไว้
ใน Trace ดังที่แสดงในรูปด้านล่าง
ส่วนส่วนหัวการตอบกลับของรายละเอียดเฟสจะแสดงค่าของ
X-Apigee-fault-code
และX-Apigee-fault-source
ดังที่แสดงใน รูปด้านล่างหากช่องเหล่านี้มีค่าที่แสดงในตารางด้านล่าง การตอบกลับข้อผิดพลาด 504 จะเริ่มต้น จากเซิร์ฟเวอร์แบ็กเอนด์:
ส่วนหัวการตอบกลับ ค่า X-Apigee-fault-source เป้าหมาย X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
ตรวจสอบ
เชนพร็อกซี ทำตามขั้นตอนต่อไปนี้เพื่อดูว่าเซิร์ฟเวอร์แบ็กเอนด์เรียกพร็อกซีอื่นหรือไม่
ใน Apigee
- กลับไปที่ระยะส่งคำขอที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย แล้วคลิก ปุ่มแสดง Curl เพื่อดูชื่อแทนของโฮสต์เซิร์ฟเวอร์แบ็กเอนด์
- ถ้าชื่อแทนโฮสต์ของเซิร์ฟเวอร์แบ็กเอนด์ชี้ไปที่ชื่อแทนโฮสต์เสมือน หมายความว่าการเชื่อมโยงพร็อกซีจะอยู่ใน ทำขั้นตอนข้างต้นซ้ำกับพร็อกซีที่เชื่อมโยงแต่ละรายการเพื่อวิเคราะห์สาเหตุของเกตเวย์ 504 การตอบกลับข้อผิดพลาดการหมดเวลา 504 การหมดเวลาของเกตเวย์ที่เกิดขึ้นในพร็อกซีที่มีการเชื่อมโยงที่ขั้นตอนอื่นของ สามารถวินิจฉัยรอบคำขอ/การตอบกลับได้โดยใช้ Playbook นี้
- หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์แบ็กเอนด์ชี้ไปที่เซิร์ฟเวอร์แบ็กเอนด์แล้ว ให้ไปยัง การแก้ปัญหา
ขั้นตอนที่ 2: เรียกใช้ API เซิร์ฟเวอร์แบ็กเอนด์โดยตรง (ผู้ใช้ระบบคลาวด์สาธารณะและ Private Cloud)
เรียกใช้เซิร์ฟเวอร์แบ็กเอนด์โดยตรงเพื่อยืนยันลักษณะการตอบกลับของเกตเวย์ 504 ที่คล้ายกัน เมื่อส่งคำขอผ่าน Apigee Edge
- ตรวจสอบว่าคุณมีส่วนหัว พารามิเตอร์การค้นหา และข้อมูลเข้าสู่ระบบที่จำเป็นทั้งหมดเพื่อ ไปยังเซิร์ฟเวอร์แบ็กเอนด์โดยเป็นส่วนหนึ่งของคำขอ
- หากบริการแบ็กเอนด์เข้าถึงได้แบบสาธารณะ คุณสามารถใช้คำสั่ง
curl
Postman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API เซิร์ฟเวอร์แบ็กเอนด์โดยตรง - หากเข้าถึงเซิร์ฟเวอร์แบ็กเอนด์ได้จาก Message Processor เท่านั้น ให้ใช้
curl
Postman หรือไคลเอ็นต์ REST อื่นๆ จะเรียกใช้ API เซิร์ฟเวอร์แบ็กเอนด์โดยตรงจาก ตัวประมวลผลข้อความ - ถ้าบริการแบ็กเอนด์แสดงการตอบกลับ 504 ของเกตเวย์หมดเวลา ให้ไปที่ การแก้ปัญหา
ขั้นตอนที่ 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 การตอบกลับข้อผิดพลาด 504 การหมดเวลาของเกตเวย์ที่เกิดขึ้นในพร็อกซีที่มีการเชื่อมต่อที่ขั้นตอนอื่นๆ สามารถวินิจฉัยได้ โดยใช้ Playbook นี้
- หากไม่มี เชนพร็อกซี และการตอบกลับข้อผิดพลาด 504 จะมาจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ความละเอียด
รูปด้านล่างเป็นตัวอย่างของรายการบันทึก NGINX ที่แสดงการตอบกลับข้อผิดพลาด 504 ที่เกิดจาก เซิร์ฟเวอร์เป้าหมาย:
หากฟิลด์ X-Apigee-fault-source
และ X-Apigee-fault-code
มี
ค่าที่แสดงในตารางด้านล่าง การตอบสนอง 504 มาจากเซิร์ฟเวอร์แบ็กเอนด์ ดังนี้
ส่วนหัวการตอบกลับ | ค่า |
---|---|
X-Apigee-fault-source | เป้าหมาย |
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
ขั้นตอนที่ 4: การใช้การตรวจสอบ API (ผู้ใช้ระบบคลาวด์สาธารณะเท่านั้น)
การตรวจสอบ API ช่วยให้คุณสามารถแยกปัญหา ด้านต่างๆ อย่างรวดเร็วเพื่อวิเคราะห์ข้อผิดพลาด ประสิทธิภาพ และปัญหาด้านเวลาในการตอบสนอง รวมถึงแหล่งที่มาของปัญหานั้น เช่น แอปของนักพัฒนาซอฟต์แวร์ พร็อกซี API, เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API
ดูสถานการณ์ตัวอย่าง ซึ่งแสดงวิธีแก้ปัญหา 5xx เกี่ยวกับ API ของคุณโดยใช้การตรวจสอบ API ตัวอย่างเช่น ให้ตั้งค่าการแจ้งเตือนเพื่อแจ้งผู้ดูแลระบบเมื่อรหัสสถานะ 504 เกินเกณฑ์ที่กำหนด
ความละเอียด
เมื่อใช้กระบวนการวินิจฉัยที่ระบุไว้ข้างต้น คุณสามารถทำงานร่วมกับทีมเซิร์ฟเวอร์แบ็กเอนด์เพื่อแก้ไข ปัญหาในเซิร์ฟเวอร์แบ็กเอนด์ ซึ่งอาจรวมถึงการปรับระยะหมดเวลาในเซิร์ฟเวอร์แบ็กเอนด์หรือ การหมดเวลาในตัวจัดสรรภาระงานที่อยู่ด้านหน้าเซิร์ฟเวอร์เป้าหมาย
รวบรวมข้อมูลการวินิจฉัย
หากยังพบปัญหาอยู่ ให้แชร์ข้อมูลการวินิจฉัยต่อไปนี้กับทีมสนับสนุนของ Apigee
หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ ให้ระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- ดำเนินการตามคำสั่ง
curl
เพื่อสร้างคำตอบสำหรับข้อผิดพลาด 504 ซ้ำ - ไฟล์การติดตามที่มีคำขอ API ที่ได้รับการตอบกลับข้อผิดพลาด 504 เกตเวย์หมดเวลา
หากคุณเป็นผู้ใช้ Private Cloud ให้ระบุข้อมูลต่อไปนี้
- พบข้อความแสดงข้อผิดพลาดทั้งหมดสำหรับคำขอที่ล้มเหลว
- ชื่อสภาพแวดล้อม
- แพ็กเกจพร็อกซี API
- ไฟล์การติดตามที่มีคำขอ API ที่ได้รับการตอบกลับข้อผิดพลาด 504 เกตเวย์หมดเวลา
- บันทึกการเข้าถึง NGINX
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- บันทึกของผู้ประมวลผลข้อความ
/opt/apigee/var/log/edge-message-processor/logs/system.log