คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
วิดีโอ
วิดีโอ | คำอธิบาย |
---|---|
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
อาจส่งคืนโดยเซิร์ฟเวอร์แบ็กเอนด์เนื่องจาก
สาเหตุต่างๆ ได้ Playbook นี้อธิบายวิธีแก้ปัญหาโดยใช้ขั้นตอนทั่วไปและแก้ปัญหานี้
ไม่ว่าจะเกิดจากสาเหตุใด
สาเหตุที่เป็นไปได้สำหรับปัญหานี้มีดังนี้
สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาสำหรับ |
---|---|---|
ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ | เซิร์ฟเวอร์แบ็กเอนด์อาจล้มเหลวด้วยเหตุผลบางอย่าง | ผู้ใช้ Edge Private และ Public Cloud |
ขั้นตอนการวินิจฉัยทั่วไป
ใช้เครื่องมือ/เทคนิคต่อไปนี้เพื่อวินิจฉัยข้อผิดพลาดนี้
การตรวจสอบ API
ขั้นตอนที่ 1: การใช้การตรวจสอบ API
วิธีวินิจฉัยข้อผิดพลาดโดยใช้การตรวจสอบ API
- ลงชื่อเข้าใช้ Apigee Edge UI ในฐานะผู้ใช้ที่มี บทบาทที่เหมาะสม
เปลี่ยนเป็นองค์กรที่ต้องการตรวจสอบปัญหา
- ไปที่ วิเคราะห์ > การตรวจสอบ API > หน้าตรวจสอบ
- เลือกกรอบเวลาที่คุณพบข้อผิดพลาด
พล็อตรหัสข้อผิดพลาดเทียบกับเวลา
เลือกเซลล์ที่มีรหัสข้อผิดพลาด
messaging.adaptors.http.flow.ErrorResponseCode
ตามที่แสดง ด้านล่างข้อมูลเกี่ยวกับรหัสข้อผิดพลาด
messaging.adaptors.http.flow.ErrorResponseCode
จะแสดงเป็น แสดงอยู่ด้านล่างคลิกดูบันทึก และขยายแถวสำหรับคำขอที่ล้มเหลว
- จากหน้าต่าง Logs ให้จดรายละเอียดต่อไปนี้
- รหัสข้อความคำขอ
- รหัสสถานะ:
500
- แหล่งที่มาของข้อผิดพลาด:
target
- รหัสข้อผิดพลาด:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
ขั้นตอนที่ 2: การใช้เครื่องมือติดตาม
วิธีวินิจฉัยข้อผิดพลาดโดยใช้เครื่องมือติดตาม
- เปิดใช้เซสชันการติดตาม และ
- รอข้อผิดพลาด
500 Internal Server Error
ที่มีรหัสข้อผิดพลาดmessaging.adaptors.http.flow.ErrorResponseCode
จะเกิดขึ้น หรือ - หากคุณทำให้เกิดปัญหาซ้ำได้ ให้เรียกใช้ API เพื่อจำลองปัญหา
500 Internal Server Error
- รอข้อผิดพลาด
ตรวจสอบว่าเปิดใช้แสดง FlowInfo ทั้งหมด แล้ว
- เลือกคำขอที่ไม่สำเร็จรายการหนึ่งและตรวจสอบการติดตาม
- ดำเนินการตามขั้นตอนต่างๆ ของการติดตามและค้นหาตำแหน่งที่เกิดข้อผิดพลาด
โดยปกติแล้ว คุณจะเห็นข้อผิดพลาดในขั้นตอนหลังจากที่การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย ตามที่แสดงด้านล่าง
- ไปที่ระยะ AX (Analytics Data Recorded) ในการติดตามและคลิก
เลื่อนลงไปที่ส่วนส่วนหัวการตอบกลับรายละเอียดระยะ และมองหา ของ 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-code
ส่วนหัว ค่า X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
สาเหตุ: เกิดข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
การวินิจฉัย
500 Internal Server Error
ที่ตอบกลับโดยเซิร์ฟเวอร์แบ็กเอนด์สามารถ
เกิดจากหลายสาเหตุ คุณจะต้องวิเคราะห์แต่ละสถานการณ์แยกกัน
- กำหนดรหัสข้อผิดพลาด แหล่งที่มาของข้อผิดพลาดสำหรับข้อผิดพลาดที่พบโดยใช้การตรวจสอบ API เครื่องมือติดตามหรือบันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในขั้นตอนการวิเคราะห์ทั่วไป
- หากแหล่งที่มาของข้อผิดพลาดคือ
target
และโค้ดความผิดพลาดคือmessaging.adaptors.http.flow.ErrorResponseCode
นั่นหมายถึงว่า จะส่งกลับข้อผิดพลาดโดยเซิร์ฟเวอร์แบ็กเอนด์ - ใช้ขั้นตอนใดขั้นตอนหนึ่งต่อไปนี้เพื่อวิเคราะห์สาเหตุของปัญหา
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>
ในการตอบกลับข้างต้น โปรดทราบว่าข้อความแสดงข้อผิดพลาดจากเซิร์ฟเวอร์แบ็กเอนด์คือ ไม่ได้รับสิทธิ์ ซึ่งบ่งชี้ว่าผู้ใช้อาจผ่านการตรวจสอบที่ไม่ถูกต้อง ข้อมูลเข้าสู่ระบบ จึงเป็นสาเหตุที่ทำให้ได้รับข้อผิดพลาดนี้
เรียกใช้เซิร์ฟเวอร์แบ็กเอนด์
การเรียกไปยังเซิร์ฟเวอร์แบ็กเอนด์โดยตรง:
คุณเรียกไปยังเซิร์ฟเวอร์แบ็กเอนด์โดยตรงได้โดยทำดังนี้
- ตรวจสอบว่าคุณได้รับ
500 Internal Server Error
เดียวกันหรือไม่ การตอบกลับตามที่ได้รับเมื่อส่งคำขอผ่าน Apigee Edge - ตรวจสอบข้อความแสดงข้อผิดพลาด (การตอบกลับ) ที่ได้รับจากเซิร์ฟเวอร์แบ็กเอนด์
ทำตามขั้นตอนต่อไปนี้เพื่อเรียกโดยตรงไปยังเซิร์ฟเวอร์แบ็กเอนด์
- ตรวจสอบว่ามีส่วนหัว พารามิเตอร์การค้นหา และส่วนหัวที่จำเป็นทั้งหมด ข้อมูลเข้าสู่ระบบที่ต้องส่งผ่านไปยังเซิร์ฟเวอร์แบ็กเอนด์โดยเป็นส่วนหนึ่งของคำขอ
- หากบริการแบ็กเอนด์เข้าถึงได้แบบสาธารณะ คุณสามารถใช้
curl
, Postman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API เซิร์ฟเวอร์แบ็กเอนด์โดยตรง หากเซิร์ฟเวอร์ส่วนหลังสามารถเข้าถึงได้จากโปรแกรมประมวลผลข้อความเท่านั้น คุณสามารถ ใช้คำสั่ง
curl
, Postman หรือไคลเอ็นต์ REST อื่นๆ และเรียกใช้ API เซิร์ฟเวอร์แบ็กเอนด์โดยตรงจาก Message Processor- ตรวจสอบว่าบริการแบ็กเอนด์กำลังส่งคืน
500 Internal Server Error
จริงหรือไม่ และตรวจสอบข้อความแสดงข้อผิดพลาด (การตอบกลับ) ที่เซิร์ฟเวอร์แบ็กเอนด์แสดง และ ระบุสาเหตุของข้อผิดพลาดนี้
บันทึกของเซิร์ฟเวอร์แบ็กเอนด์
การใช้บันทึกเซิร์ฟเวอร์แบ็กเอนด์
- ตรวจสอบบันทึกเซิร์ฟเวอร์แบ็กเอนด์ และพยายามรับรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดและ สาเหตุ
- หากเป็นไปได้ ให้เปิดใช้โหมดแก้ไขข้อบกพร่องในเซิร์ฟเวอร์แบ็กเอนด์เพื่อดูรายละเอียดเพิ่มเติม เกี่ยวกับข้อผิดพลาดและสาเหตุ
- ในการติดตาม ให้เลือกคำขอ API ที่ดำเนินการไม่สำเร็จด้วย
ตรวจสอบว่าคุณกำลังใช้ การเชื่อมโยงพร็อกซีในปลายทางเป้าหมายที่เจาะจงของพร็อกซี API ที่ล้มเหลว กล่าวคือ หากเซิร์ฟเวอร์/ปลายทางเป้าหมายเรียกใช้พร็อกซีอื่นใน Apigee Edge ในการพิจารณาในเรื่องนี้:
หากคุณมีการติดตามสำหรับคำขอที่ล้มเหลว ให้ไปที่คำขอที่ส่งแล้ว ไปยังเฟสเซิร์ฟเวอร์เป้าหมาย แล้วคลิก Show Curl
- หน้าต่าง Curl for Request Sent to Target Server จะเปิดขึ้นเพื่อให้คุณ กำหนดชื่อแทนของโฮสต์เซิร์ฟเวอร์เป้าหมายได้
- ตรวจสอบปลายทางเป้าหมายของพร็อกซี API และดูว่าเซิร์ฟเวอร์แบ็กเอนด์ URL หรือชื่อโฮสต์ในเซิร์ฟเวอร์เป้าหมายชี้ไปที่พร็อกซีอื่นหรือของคุณเอง เซิร์ฟเวอร์แบ็กเอนด์
- ถ้าชื่อแทนโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปยังชื่อแทนโฮสต์เสมือน
คือการทำพร็อกซี ในกรณีนี้ คุณต้องทำขั้นตอนด้านบนซ้ำทั้งหมด
พร็อกซีแบบเครือข่ายเดียวกันจนกว่าคุณจะทราบว่าอะไรคือสาเหตุที่แท้จริงของ
500 Internal Server Error
ในกรณีนี้500 Internal Server Error
อาจ เกิดขึ้นในพร็อกซีเครือข่ายอื่นๆ ที่ขั้นตอนอื่นๆ ได้เช่นกัน ซึ่งสามารถวินิจฉัยและ แก้ไขปัญหาได้โดยใช้คำแนะนำใน Playbook นี้หรือใน Playbook 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ - หากชื่อแทนโฮสต์ของเซิร์ฟเวอร์เป้าหมายชี้ไปที่เซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ การแก้ปัญหา
ความละเอียด
หากมั่นใจว่าข้อผิดพลาด 500
มาจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ดำเนินการดังนี้
ทำงานร่วมกับทีมเซิร์ฟเวอร์แบ็กเอนด์เพื่อแก้ไขปัญหาอย่างเหมาะสม
ในตัวอย่างที่พูดถึงข้างต้น คุณอาจต้องขอให้ผู้ใช้ส่งข้อมูลเข้าสู่ระบบที่ถูกต้องเพื่อแก้ไข ปัญหานี้
สิ่งสำคัญที่ควรทราบ
- ข้อความแสดงข้อผิดพลาดจริงที่เซิร์ฟเวอร์แบ็กเอนด์แสดงสำหรับ
500 Internal Server Error
จะดูได้ต่อเมื่อคุณได้บันทึกเซสชันการติดตามสำหรับความล้มเหลวไว้เท่านั้น คำขอ - การตอบกลับของเซิร์ฟเวอร์แบ็กเอนด์จะไม่ถูกบันทึกไว้ในการตรวจสอบ API, บันทึกการเข้าถึง NGINX หรือ บันทึกสำหรับผู้ประมวลผลข้อมูลข้อความเพื่อเหตุผลด้านความปลอดภัย
- คุณสามารถตรวจสอบบันทึกของเซิร์ฟเวอร์แบ็กเอนด์หรือเปิดใช้โหมดแก้ไขข้อบกพร่องในแบ็กเอนด์เพื่อรับข้อมูลเพิ่มเติม
รายละเอียดเกี่ยวกับ
500 Internal Server Error
และ/หรือเห็นข้อความแสดงข้อผิดพลาดที่แสดงผล โดยเซิร์ฟเวอร์แบ็กเอนด์
ต้องรวบรวมข้อมูลการวินิจฉัย
หากปัญหายังคงอยู่แม้ว่าจะทำตามคำแนะนำด้านบนแล้ว ให้รวบรวมข้อมูลต่อไปนี้ ข้อมูลการวินิจฉัยดังกล่าวและติดต่อฝ่ายสนับสนุนของ Apigee Edge
หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ โปรดระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- ทำตามคำสั่ง
curl
เพื่อทำให้เกิดข้อผิดพลาด500
ซ้ำ - ไฟล์การติดตามที่มีคำขอที่มี
500 Internal Server Error
- หากไม่มีข้อผิดพลาด
500
ในปัจจุบัน โปรดระบุเวลา ช่วงเวลาที่มีข้อมูลเขตเวลาเมื่อเกิดข้อผิดพลาด500
รายการในอดีต
หากคุณเป็นผู้ใช้ Private Cloud ให้ระบุข้อมูลต่อไปนี้
- พบข้อความแสดงข้อผิดพลาดทั้งหมดสำหรับคำขอที่ล้มเหลว
- องค์กร ชื่อสภาพแวดล้อม และชื่อพร็อกซี API ที่คุณสังเกตการณ์
ข้อผิดพลาด
500
รายการ - แพ็กเกจพร็อกซี API
- ไฟล์การติดตามที่มีคำขอที่มี
500 Internal Server Error
- บันทึกการเข้าถึง NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
สถานที่: ORG, ENV และ PORT# จะถูกแทนที่ด้วยค่าจริง
- บันทึกของระบบโปรแกรมประมวลผลข้อความ
/opt/apigee/var/log/edge-message-processor/logs/system.log
- ช่วงเวลาที่มีข้อมูลเขตเวลาเมื่อเกิดข้อผิดพลาด
500
รายการ