คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
วิดีโอ
| วิดีโอ | คำอธิบาย |
|---|---|
| 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ - เกิดจากแบ็กเอนด์ | แสดง 500 Internal Server Error แบบเรียลไทม์ที่เกิดจากเซิร์ฟเวอร์แบ็กเอนด์ พร้อมขั้นตอนการแก้ปัญหาและแก้ไขข้อผิดพลาด |
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ HTTP 500 พร้อมข้อความ
Internal Server Error เป็นการตอบกลับการเรียก API
รหัสสถานะ HTTP 500 คือการตอบกลับข้อผิดพลาดทั่วไป ซึ่งหมายความว่าเซิร์ฟเวอร์
พบเงื่อนไขที่ไม่คาดคิดซึ่งทำให้ไม่สามารถดำเนินการตามคำขอได้ โดยปกติแล้วเซิร์ฟเวอร์จะแสดงข้อผิดพลาดนี้
เมื่อไม่มีรหัสข้อผิดพลาดอื่นที่เหมาะสม
ข้อความแสดงข้อผิดพลาด
แอปพลิเคชันไคลเอ็นต์ได้รับโค้ดตอบกลับต่อไปนี้
HTTP/1.1 500 Internal Server Error
นอกจากนี้ คุณอาจเห็นข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความที่แสดงด้านล่าง
ตัวอย่างที่ 1
ตัวอย่างการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์ #1
{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}ตัวอย่างที่ 2
ตัวอย่างการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์ #2
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
สาเหตุที่เป็นไปได้
500 Internal Server Error อาจแสดงโดยเซิร์ฟเวอร์แบ็กเอนด์เนื่องจากสาเหตุหลายประการ เพลย์บุ๊กนี้จะอธิบายวิธีแก้ปัญหาโดยใช้ขั้นตอนทั่วไปและแก้ไขข้อผิดพลาดนี้
โดยไม่คำนึงถึงสาเหตุ
สาเหตุที่เป็นไปได้ของปัญหามีดังนี้
| สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาที่ใช้ได้กับ |
|---|---|---|
| ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ | เซิร์ฟเวอร์แบ็กเอนด์อาจล้มเหลวด้วยเหตุผลบางประการ | ผู้ใช้ Edge Private และ Public Cloud |
ขั้นตอนการวินิจฉัยทั่วไป
ใช้เครื่องมือ/เทคนิคใดเทคนิคหนึ่งต่อไปนี้เพื่อวินิจฉัยข้อผิดพลาดนี้
การตรวจสอบ API
ขั้นตอนที่ 1: ใช้การตรวจสอบ API
วิธีวินิจฉัยข้อผิดพลาดโดยใช้การตรวจสอบ API
- ลงชื่อเข้าใช้ UI ของ Apigee Edge ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
เปลี่ยนไปใช้องค์กรที่ต้องการตรวจสอบปัญหา
- ไปที่หน้า Analyze > API Monitoring > Investigate
- เลือกกรอบเวลาที่เฉพาะเจาะจงซึ่งคุณพบข้อผิดพลาด
พล็อตรหัสข้อผิดพลาด เทียบกับเวลา
เลือกเซลล์ที่มีรหัสข้อผิดพลาด
messaging.adaptors.http.flow.ErrorResponseCodeดังที่แสดง ด้านล่าง
ข้อมูลเกี่ยวกับรหัสข้อผิดพลาด
messaging.adaptors.http.flow.ErrorResponseCodeจะแสดงดังที่ แสดงด้านล่าง
คลิกดูบันทึก แล้วขยายแถวสำหรับคำขอที่ไม่สำเร็จ
- จากหน้าต่างบันทึก ให้จดรายละเอียดต่อไปนี้
- รหัสข้อความคำขอ
- รหัสสถานะ:
500 - แหล่งที่มาของข้อผิดพลาด:
target - รหัสข้อผิดพลาด:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
ขั้นตอนที่ 2: ใช้เครื่องมือ Trace
วิธีวินิจฉัยข้อผิดพลาดโดยใช้เครื่องมือ Trace
- เปิดใช้เซสชัน Trace แล้วทำอย่างใดอย่างหนึ่งต่อไปนี้
- รอให้เกิดข้อผิดพลาด
500 Internal Server Errorที่มีรหัสข้อผิดพลาดmessaging.adaptors.http.flow.ErrorResponseCodeหรือ - หากจำลองปัญหาได้ ให้เรียก API เพื่อจำลองปัญหา
500 Internal Server Error
- รอให้เกิดข้อผิดพลาด
ตรวจสอบว่าได้เปิดใช้แสดง FlowInfo ทั้งหมด แล้ว

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

- ไปที่ระยะ AX (บันทึกข้อมูลวิเคราะห์) ใน Trace แล้วคลิก
เลื่อนลงไปที่ส่วนรายละเอียดระยะ ส่วนหัวการตอบกลับ แล้วกำหนด ค่าของ X-Apigee-fault-code และ X-Apigee-fault-source รวมถึง X-Apigee-Message-ID ดังที่แสดงด้านล่าง

- จดค่าของ X-Apigee-fault-code, X-Apigee-fault-source, และ X-Apigee-Message-ID:
| ส่วนหัวการตอบกลับ | ค่า |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
ขั้นตอนที่ 3: ใช้บันทึกการเข้าถึง NGINX
วิธีวินิจฉัยข้อผิดพลาดโดยใช้บันทึกการเข้าถึง NGINX
- หากเป็นผู้ใช้ Private Cloud คุณสามารถใช้บันทึกการเข้าถึง NGINX เพื่อดูข้อมูลสำคัญเกี่ยวกับ HTTP
500 Internal Server Error ตรวจสอบบันทึกการเข้าถึง NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- ค้นหาเพื่อดูว่ามีข้อผิดพลาด
500ที่มีรหัสข้อผิดพลาดmessaging.adaptors.http.flow.ErrorResponseCodeในช่วงระยะเวลาที่เฉพาะเจาะจง (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำขอที่ยังคงล้มเหลวด้วยข้อผิดพลาด500หรือไม่ หากพบข้อผิดพลาด
500ที่มี X-Apigee-fault-code ตรงกับ ค่าของmessaging.adaptors.http.flow.ErrorResponseCodeให้ กำหนดค่าของ X-Apigee-fault-sourceตัวอย่างข้อผิดพลาด 500 จากบันทึกการเข้าถึง NGINX:
รายการตัวอย่างข้างต้นจากบันทึกการเข้าถึง NGINX มีค่าต่อไปนี้สำหรับ X-Apigee-fault-code และ X-Apigee-fault-source:
ส่วนหัว ค่า X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
สาเหตุ: ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
การวินิจฉัย
500 Internal Server Error ที่เซิร์ฟเวอร์แบ็กเอนด์แสดงอาจเกิดจากสาเหตุหลายประการ คุณจะต้องวินิจฉัยแต่ละสถานการณ์แยกกัน
- กำหนดรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาด สำหรับข้อผิดพลาดที่พบโดยใช้การตรวจสอบ API, เครื่องมือ Trace หรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในขั้นตอนการวินิจฉัยทั่วไป
- หากแหล่งที่มาของข้อผิดพลาด คือ
targetและรหัสข้อผิดพลาด คือmessaging.adaptors.http.flow.ErrorResponseCodeแสดงว่า เซิร์ฟเวอร์แบ็กเอนด์แสดงข้อผิดพลาด - คุณสามารถใช้ขั้นตอนใดขั้นตอนหนึ่งต่อไปนี้เพื่อวินิจฉัยสาเหตุของปัญหา
Trace
การใช้ Trace:
หากมีเซสชัน Trace สำหรับความล้มเหลว ให้ทำตามขั้นตอนต่อไปนี้
- ใน Trace ให้เลือกคำขอ API ที่ล้มเหลวด้วย
500 Internal Server Error เลือกระยะได้รับคำตอบจากเซิร์ฟเวอร์เป้าหมาย จาก คำขอ API ที่ล้มเหลวดังที่แสดงในรูปภาพด้านล่าง
เลื่อนลงไปที่ส่วนรายละเอียดระยะ แล้วตรวจสอบ เนื้อหาการตอบกลับ ซึ่งมีการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์
ตัวอย่างเนื้อหาการตอบกลับ:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
ในการตอบกลับข้างต้น ให้สังเกตว่าข้อความแสดงข้อผิดพลาดจากเซิร์ฟเวอร์แบ็กเอนด์คือ Not Authorised ซึ่งแสดงว่าผู้ใช้อาจส่งข้อมูลเข้าสู่ระบบที่ไม่ถูกต้อง และได้รับข้อผิดพลาดนี้
เรียกเซิร์ฟเวอร์แบ็กเอนด์
การเรียกเซิร์ฟเวอร์แบ็กเอนด์โดยตรง:
คุณสามารถเรียกเซิร์ฟเวอร์แบ็กเอนด์โดยตรงและทำสิ่งต่อไปนี้ได้
- ตรวจสอบว่าคุณได้รับคำตอบ
500 Internal Server Errorเดียวกันกับที่ได้รับเมื่อส่งคำขอผ่าน Apigee Edge - ตรวจสอบข้อความแสดงข้อผิดพลาด (การตอบกลับ) ที่ได้รับจากเซิร์ฟเวอร์แบ็กเอนด์
ทำตามขั้นตอนต่อไปนี้เพื่อเรียกเซิร์ฟเวอร์แบ็กเอนด์โดยตรง
- ตรวจสอบว่าคุณมีส่วนหัว พารามิเตอร์การค้นหา และข้อมูลเข้าสู่ระบบทั้งหมดที่จำเป็นต้องส่งไปยังเซิร์ฟเวอร์แบ็กเอนด์เป็นส่วนหนึ่งของคำขอ
- หากบริการแบ็กเอนด์เข้าถึงได้แบบสาธารณะ คุณสามารถใช้คำสั่ง
curlPostman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API ของเซิร์ฟเวอร์แบ็กเอนด์โดยตรง หากเซิร์ฟเวอร์แบ็กเอนด์เข้าถึงได้จาก Message Processor เท่านั้น คุณสามารถ ใช้คำสั่ง
curlPostman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API ของเซิร์ฟเวอร์แบ็กเอนด์โดยตรงจาก Message Processor- ตรวจสอบว่าบริการแบ็กเอนด์แสดง
500 Internal Server Errorจริงๆ และตรวจสอบข้อความแสดงข้อผิดพลาด (การตอบกลับ) ที่เซิร์ฟเวอร์แบ็กเอนด์แสดง แล้ว กำหนดสาเหตุของข้อผิดพลาดนี้
บันทึกเซิร์ฟเวอร์แบ็กเอนด์
การใช้บันทึกเซิร์ฟเวอร์แบ็กเอนด์
- ตรวจสอบบันทึกเซิร์ฟเวอร์แบ็กเอนด์และพยายามดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดและ สาเหตุ
- หากเป็นไปได้ ให้เปิดใช้โหมดแก้ไขข้อบกพร่องในเซิร์ฟเวอร์แบ็กเอนด์เพื่อดูรายละเอียดเพิ่มเติม เกี่ยวกับข้อผิดพลาดและสาเหตุ
- ใน Trace ให้เลือกคำขอ API ที่ล้มเหลวด้วย
ตรวจสอบว่าคุณใช้ การเชื่อมโยงพร็อกซี ในปลายทางเป้าหมายที่เฉพาะเจาะจงของพร็อกซี API ที่ล้มเหลวหรือไม่ นั่นคือ หากเซิร์ฟเวอร์เป้าหมาย/ปลายทางเป้าหมายเรียกใช้พร็อกซีอื่นใน Apigee Edge วิธีตรวจสอบ
หากมี Trace สำหรับคำขอที่ล้มเหลว ให้ไปที่ระยะคำขอที่ส่ง ไปยังเซิร์ฟเวอร์เป้าหมาย แล้วคลิกแสดง Curl
- หน้าต่าง Curl สำหรับคำขอที่ส่งไปยังเซิร์ฟเวอร์เป้าหมาย จะเปิดขึ้น ซึ่งคุณ สามารถกำหนดนามแฝงโฮสต์ของเซิร์ฟเวอร์เป้าหมายได้
- ตรวจสอบปลายทางเป้าหมายของพร็อกซี API และดูว่า URL ของเซิร์ฟเวอร์แบ็กเอนด์ หรือชื่อโฮสต์ในเซิร์ฟเวอร์เป้าหมายชี้ไปยังพร็อกซีอื่นหรือเซิร์ฟเวอร์แบ็กเอนด์ของคุณเอง หรือไม่
- หากนามแฝงโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปยังนามแฝงโฮสต์เสมือน แสดงว่าเป็นการเชื่อมโยงพร็อกซี
ในกรณีนี้ คุณต้องทำซ้ำขั้นตอนทั้งหมดข้างต้นสำหรับ
พร็อกซีที่เชื่อมโยงจนกว่าจะกำหนดได้ว่าอะไรเป็นสาเหตุของ
500 Internal Server Errorในกรณีเหล่านี้500 Internal Server Errorอาจ เกิดขึ้นในพร็อกซีที่เชื่อมโยงอื่นๆ ในระยะอื่นๆ ด้วย ซึ่งสามารถวินิจฉัยและ แก้ไขได้โดยใช้คำแนะนำที่ระบุไว้ในเพลย์บุ๊กนี้หรือใน เพลย์บุ๊ก 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ - หากนามแฝงโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปยังเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ ส่วนการแก้ปัญหา
ความละเอียด
หากตรวจสอบแล้วว่าข้อผิดพลาด 500 มาจากเซิร์ฟเวอร์แบ็กเอนด์ ให้
ทำงานร่วมกับทีมเซิร์ฟเวอร์แบ็กเอนด์เพื่อแก้ไขปัญหาอย่างเหมาะสม
ในตัวอย่างที่กล่าวถึงข้างต้น คุณอาจต้องขอให้ผู้ใช้ส่งข้อมูลเข้าสู่ระบบที่ถูกต้องเพื่อแก้ไขปัญหานี้
ประเด็นสำคัญที่ควรทราบ
- คุณจะดูข้อความแสดงข้อผิดพลาดจริงที่เซิร์ฟเวอร์แบ็กเอนด์แสดงสำหรับข้อผิดพลาด
500 Internal Server Errorได้ก็ต่อเมื่อคุณได้บันทึกเซสชัน Trace สำหรับคำขอที่ล้มเหลว - ระบบจะไม่บันทึกการตอบกลับจากเซิร์ฟเวอร์แบ็กเอนด์ในการตรวจสอบ API, บันทึกการเข้าถึง NGINX หรือ บันทึก Message Processor ด้วยเหตุผลด้านความปลอดภัย
- คุณสามารถตรวจสอบบันทึกเซิร์ฟเวอร์แบ็กเอนด์หรือเปิดใช้โหมดแก้ไขข้อบกพร่องในแบ็กเอนด์เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับ
500 Internal Server Errorและ/หรือดูข้อความแสดงข้อผิดพลาดที่เซิร์ฟเวอร์แบ็กเอนด์แสดง
ข้อมูลการวินิจฉัยที่ต้องรวบรวม
หากยังพบปัญหาเดิมอยู่แม้จะทำตามวิธีการข้างต้นแล้ว ให้รวบรวมข้อมูลการวินิจฉัยต่อไปนี้ และติดต่อ ทีมสนับสนุนของ Apigee Edge
หากเป็นผู้ใช้ Public Cloud โปรดระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- คำสั่ง
curlที่สมบูรณ์เพื่อจำลองข้อผิดพลาด500 - ไฟล์ Trace ที่มีคำขอซึ่งมีข้อผิดพลาด
500 Internal Server Error - หากข้อผิดพลาด
500ไม่เกิดขึ้นในปัจจุบัน โปรดระบุช่วงเวลาพร้อมข้อมูลเขตเวลาที่เกิดข้อผิดพลาด500ในอดีต
หากเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้
- ข้อความแสดงข้อผิดพลาดทั้งหมดที่พบสำหรับคำขอที่ล้มเหลว
- ชื่อองค์กร ชื่อสภาพแวดล้อม และชื่อพร็อกซี API ที่คุณพบข้อผิดพลาด
500 - ชุดรวมพร็อกซี API
- ไฟล์ Trace ที่มีคำขอซึ่งมีข้อผิดพลาด
500 Internal Server Error - บันทึกการเข้าถึง NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logโดยที่: ORG, ENV, และ PORT# จะถูกแทนที่ด้วยค่าจริง
- บันทึกของระบบ Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log - ช่วงเวลาพร้อมข้อมูลเขตเวลาที่เกิดข้อผิดพลาด
500