คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
วิดีโอ
ดูวิดีโอต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการ
วิดีโอ | คำอธิบาย |
---|---|
บทนำ | ให้คำแนะนำเกี่ยวกับข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการและสาเหตุที่เป็นไปได้ และแสดง ข้อผิดพลาดภายในเซิร์ฟเวอร์แบบเรียลไทม์ 500 รวมทั้งขั้นตอนการแก้ปัญหาและแก้ไขข้อผิดพลาด |
จัดการข้อผิดพลาดเกี่ยวกับข้อความไฮไลต์บริการและตัวแปรการแตกข้อมูล | แสดงข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการที่เกิดจากนโยบายคำขอราคาเสนอบริการและตัวแปรการดึงข้อมูล และแสดงวิธีแก้ปัญหาและข้อผิดพลาดเหล่านี้ |
จัดการข้อผิดพลาดเกี่ยวกับนโยบาย JavaScript | แสดงข้อผิดพลาด 500 ข้อผิดพลาดเซิร์ฟเวอร์ภายในที่เกิดจากนโยบาย JavaScript และขั้นตอนต่างๆ เพื่อแก้ปัญหาข้อผิดพลาดนี้ |
จัดการความล้มเหลวจากเซิร์ฟเวอร์แบ็กเอนด์ | แสดงตัวอย่าง 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ที่เกิดจากการทำงานล้มเหลวในเซิร์ฟเวอร์แบ็กเอนด์และแสดงขั้นตอนต่างๆ เพื่อแก้ไขข้อผิดพลาด |
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ HTTP 500 พร้อมข้อความ "ข้อผิดพลาดภายในเซิร์ฟเวอร์" เป็นการตอบสนองสำหรับการเรียก API เซิร์ฟเวอร์ภายใน 500 อาจเกิดจากข้อผิดพลาดระหว่างการบังคับใช้นโยบายภายใน Edge หรือข้อผิดพลาดที่เกิดขึ้น ในเซิร์ฟเวอร์เป้าหมาย/แบ็กเอนด์
รหัสสถานะ HTTP 500 เป็นการตอบกลับข้อผิดพลาดทั่วไป หมายความว่าเซิร์ฟเวอร์พบ เงื่อนไขที่ไม่คาดคิดซึ่งทำให้แอปไม่สามารถดำเนินการตามคำขอได้ ข้อผิดพลาดนี้มัก แสดงผลโดยเซิร์ฟเวอร์เมื่อไม่มีรหัสข้อผิดพลาดอื่นๆ ที่เหมาะสม
ข้อความแสดงข้อผิดพลาด
คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้
HTTP/1.1 500 Internal Server Error
ในบางกรณี คุณอาจสังเกตเห็นข้อความแสดงข้อผิดพลาดอื่นที่มีรายละเอียดเพิ่มเติม ตัวอย่าง ข้อความแสดงข้อผิดพลาด:
{ "fault":{ "detail":{ "errorcode":"steps.servicecallout.ExecutionFailed" }, "faultstring":"Execution of ServiceCallout callWCSAuthServiceCallout failed. Reason: ResponseCode 400 is treated as error" } }
สาเหตุที่เป็นไปได้
500 ข้อผิดพลาดของเซิร์ฟเวอร์ภายในอาจเกิดจากสาเหตุหลายประการ ใน Edge สาเหตุสามารถแบ่งเป็น 2 หมวดหมู่หลัก ตามตำแหน่งที่เกิดข้อผิดพลาดขึ้น
สาเหตุ | รายละเอียด | ดูขั้นตอนการแก้ปัญหาโดยละเอียดได้จาก |
ข้อผิดพลาดในการดำเนินการในนโยบาย Edge | นโยบาย ภายในพร็อกซี API อาจล้มเหลวด้วยเหตุผลบางประการ | ผู้ใช้ Edge Private และ Public Cloud |
ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ | เซิร์ฟเวอร์แบ็กเอนด์อาจล้มเหลวด้วยเหตุผลบางอย่าง | ผู้ใช้ Edge Private และ Public Cloud |
ข้อผิดพลาดในการดำเนินการในนโยบาย Edge
นโยบายภายใน พร็อกซี API อาจล้มเหลวด้วยเหตุผลบางอย่าง ส่วนนี้จะอธิบายวิธีการแก้ปัญหาในกรณีต่อไปนี้ 500 เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ขณะบังคับใช้นโยบาย
การวินิจฉัย
ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ระบบคลาวด์ส่วนตัวและระบบคลาวด์สาธารณะ
หากคุณมีเซสชัน UI การติดตามสำหรับข้อผิดพลาด ให้ดำเนินการดังนี้
- ยืนยันว่าข้อผิดพลาดเกิดจากการใช้นโยบาย โปรดดูรายละเอียดในการระบุที่มาของปัญหา
- หากข้อผิดพลาดเกิดขึ้นระหว่างการบังคับใช้นโยบาย ให้ดำเนินการต่อ หากข้อผิดพลาดเกิดจาก เซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
- เลือกคำขอ API ที่ล้มเหลวโดยมีข้อผิดพลาด 500 ข้อผิดพลาดเซิร์ฟเวอร์ภายในในการติดตาม
- ตรวจสอบคำขอและเลือกนโยบายเฉพาะที่ดำเนินการไม่สำเร็จหรือขั้นตอนที่ชื่อ "ข้อผิดพลาด" ที่สอดคล้องกับนโยบายที่ล้มเหลวในการติดตามทันที
- ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดโดยการตรวจสอบ "ข้อผิดพลาด" ใต้ช่องพร็อพเพอร์ตี้ หรือเนื้อหาข้อผิดพลาด
- พยายามระบุสาเหตุโดยใช้รายละเอียดที่คุณรวบรวมเกี่ยวกับข้อผิดพลาดดังกล่าว
ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ Private Cloud เท่านั้น
หากไม่มีเซสชัน UI การติดตาม ให้ดำเนินการดังนี้
- ตรวจสอบว่าเกิดข้อผิดพลาดระหว่างการใช้นโยบาย โปรดดูรายละเอียดในการระบุที่มาของปัญหา
- หากข้อผิดพลาดเกิดจากการบังคับใช้นโยบาย ให้ดำเนินการต่อ หากข้อผิดพลาดเกิดขึ้นระหว่างนโยบาย ดำเนินการต่อ หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
- ใช้บันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในการระบุ แหล่งที่มาของปัญหาเพื่อพิจารณานโยบายที่ไม่สำเร็จในพร็อกซี API และ รหัสข้อความคำขอที่ไม่ซ้ำ
- ตรวจสอบบันทึกสำหรับโปรแกรมประมวลผลข้อความ
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
) และค้นหา ซึ่งมีรหัสข้อความคำขอที่ไม่ซ้ำกัน - ถ้าคุณพบรหัสข้อความคำขอที่ไม่ซ้ำ โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับ ที่ทำให้ไม่สำเร็จ
ความละเอียด
หากคุณระบุสาเหตุของปัญหาตามนโยบายแล้ว ให้ลองแก้ไขปัญหาโดย แก้ไขนโยบายและทำให้พร็อกซีใช้งานได้อีกครั้ง
ตัวอย่างต่อไปนี้จะแสดงวิธีการหาสาเหตุและวิธีแก้ไข ประเภทต่างๆ
หากคุณต้องการความช่วยเหลือเพิ่มเติมในการแก้ปัญหา 500 เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ หรือคุณสงสัย ว่าเป็นปัญหาใน Edge โปรดติดต่อ Apigee การสนับสนุน
ตัวอย่างที่ 1: นโยบายข้อความไฮไลต์บริการทำงานไม่สำเร็จเนื่องจากข้อผิดพลาดในแบ็กเอนด์ เซิร์ฟเวอร์
หากการเรียกไปยังเซิร์ฟเวอร์แบ็กเอนด์ล้มเหลวภายในนโยบายการเรียกบริการพร้อมข้อผิดพลาดที่เกิดขึ้น 4XX หรือ 5XX จะถือว่าเป็น 500 ข้อผิดพลาดเซิร์ฟเวอร์ภายใน
- นี่คือตัวอย่างที่บริการแบ็กเอนด์ทำงานล้มเหลวโดยมีข้อผิดพลาด 404 ภายในบริการ
นโยบายของข้อความไฮไลต์ ระบบจะส่งข้อความแสดงข้อผิดพลาดต่อไปนี้ไปยังผู้ใช้ปลายทาง
{ "fault": { "detail": { "errorcode":"steps.servicecallout.ExecutionFailed" },"faultstring":"Execution of ServiceCallout service_callout_v3_store_by_lat_lon failed. Reason: ResponseCode 404 is treated as error" } } }
- เซสชัน UI การติดตามต่อไปนี้แสดงรหัสสถานะ 500 ที่เกิดจากข้อผิดพลาดในบริการ นโยบายเกี่ยวกับข้อความเสริม:
- ในตัวอย่างนี้ "ข้อผิดพลาด" พร็อพเพอร์ตี้แสดงรายการเหตุผลสำหรับนโยบายการเรียกบริการ ข้อผิดพลาด "ResponseCode 404 ถือว่าเป็นข้อผิดพลาด" ข้อผิดพลาดนี้อาจเกิดขึ้นในกรณีต่อไปนี้ ทรัพยากรที่เข้าถึงผ่าน URL ของเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการไม่ได้ พร้อมใช้งาน
- ตรวจสอบความพร้อมใช้งานของทรัพยากรในเซิร์ฟเวอร์แบ็กเอนด์ รูปภาพอาจไม่พร้อมใช้งาน ชั่วคราว/ถาวร หรืออาจมีการย้ายไปยังตำแหน่งอื่น
ความละเอียดตัวอย่างที่ 1
- ตรวจสอบความพร้อมใช้งานของทรัพยากรในเซิร์ฟเวอร์แบ็กเอนด์ รูปภาพอาจไม่พร้อมใช้งาน ชั่วคราว/ถาวร หรืออาจมีการย้ายไปยังตำแหน่งอื่น
- แก้ไข URL ของเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการให้ชี้ไปยัง URL ที่ถูกต้องและที่มีอยู่ ทรัพยากร
- หากทรัพยากรไม่พร้อมใช้งานชั่วคราว ให้ลองส่งคำขอ API เมื่อ มีทรัพยากร
ตัวอย่างที่ 2: นโยบายการดึงข้อมูลตัวแปรล้มเหลว
คราวนี้ลองมาดูอีกตัวอย่างหนึ่ง ซึ่งเกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 เนื่องจากเกิดข้อผิดพลาด ในนโยบายการดึงข้อมูลตัวแปร และดูวิธีแก้ปัญหา
- การติดตามในเซสชัน UI ต่อไปนี้แสดงรหัสสถานะ 500 เนื่องจากข้อผิดพลาดในการแตกข้อมูล นโยบายตัวแปร
- เลือกนโยบายการดึงข้อมูลตัวแปรที่ล้มเหลว เลื่อนลงแล้วดูที่ "ข้อผิดพลาด
ดูรายละเอียดเพิ่มเติมได้ที่ส่วน "เนื้อหา"
- เนื้อหาข้อผิดพลาดระบุว่า ตัวแปร "serviceCallout.oamCookieValidationResponse" จะไม่มีให้ใช้ใน นโยบายการดึงข้อมูลตัวแปร ตามที่ชื่อของตัวแปรระบุ ตัวแปรควรเป็น การตอบสนองต่อนโยบายการเรียกบริการก่อนหน้านี้
- เลือกนโยบายการเรียกบริการในการติดตาม แล้วคุณอาจพบว่า "serviceCallout.oamCookieValidationResponse" ไม่ได้ตั้งค่าตัวแปร ช่วงเวลานี้ ระบุว่าการเรียกใช้บริการแบ็กเอนด์ล้มเหลว ทำให้ได้รับการตอบสนองที่ว่างเปล่า ตัวแปร
- แม้ว่านโยบายการเรียกบริการจะล้มเหลว แต่การบังคับใช้นโยบายหลังจากบริการ
นโยบายของไฮไลต์ยังคงดำเนินต่อไปเนื่องจาก "continueOnError" Flag ในนโยบายไฮไลต์บริการได้รับการตั้งค่า
เป็นจริงตามที่แสดงด้านล่าง
วันที่<ServiceCallout async="false" continueOnError="true" enabled="true" name="Callout.OamCookieValidation"> <DisplayName>Callout.OamCookieValidation</DisplayName> <Properties /> <Request clearPayload="true" variable="serviceCallout.oamCookieValidationRequest"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </Request> <Response>serviceCallout.oamCookieValidationResponse</Response> <HTTPTargetConnection> <Properties /> <URL>http://{Url}</URL> </HTTPTargetConnection> </ServiceCallout>
- จดบันทึกรหัสข้อความที่ไม่ซ้ำกัน "X-Apigee.Message-ID" สำหรับ API ที่เฉพาะเจาะจงนี้
จากการติดตามดังนี้
- เลือกช่องทำเครื่องหมาย "ข้อมูล Analytics ที่บันทึกไว้" จากคำขอ
- เลื่อนลงและดูค่าของ X-Apigee.Message-ID
- ดูบันทึกโปรแกรมประมวลผลข้อความ
(
/opt/apigee/var/log/edge-message-processor/system.log
) และค้นหาพารามิเตอร์ รหัสข้อความที่ระบุไว้ในขั้นตอนที่ 6 พบข้อความแสดงข้อผิดพลาดต่อไปนี้สำหรับ API ที่ระบุ คำขอ:2017-05-05 07:48:18,653 org:myorg env:prod api:myapi rev:834 messageid:rrt-04984fed9e5ad3551-c-wo-32168-77563 NIOThread@5 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@149081 useCount=1 bytesRead=0 bytesWritten=0 age=3002ms lastIO=3002ms .onConnectTimeout connectAddress=mybackend.domain.com/XX.XX.XX.XX:443 resolvedAddress=mybackend.domain.com/XX.XX.XX.XX
ข้อผิดพลาดข้างต้นระบุว่านโยบายคำขอราคาเสนอบริการล้มเหลวเนื่องจากการเชื่อมต่อ ข้อผิดพลาดการหมดเวลาขณะเชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์
- ในการหาสาเหตุของข้อผิดพลาดการหมดเวลาของการเชื่อมต่อ ให้ดำเนินการ
คำสั่ง telnet จาก Message Processor ไปยังเซิร์ฟเวอร์แบ็กเอนด์ Telnet
คำสั่งระบุว่า "การเชื่อมต่อหมดเวลา" ดังที่แสดงด้านล่าง
telnet mybackend.domain.com 443 Trying XX.XX.XX.XX... telnet: connect to address XX.XX.XX.XX: Connection timed out
โดยปกติแล้ว ข้อผิดพลาดนี้จะเกิดขึ้นในสถานการณ์ต่อไปนี้
- เมื่อไม่ได้กำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์ให้อนุญาตการรับส่งข้อมูลจาก Edge Message ผู้ประมวลผลข้อมูล
- หากเซิร์ฟเวอร์แบ็กเอนด์ไม่ฟังพอร์ตดังกล่าว
ในตัวอย่างที่แสดงข้างต้น แม้ว่านโยบายการดึงข้อมูลตัวแปรจะล้มเหลว ขณะที่ ทำให้ Edge เชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ในคำขอราคาเสนอบริการไม่ได้ และสาเหตุของความล้มเหลวนี้คือไม่มีการกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์ให้เป็น อนุญาตการรับส่งข้อมูลจาก Edge Message Processor
นโยบายการดึงข้อมูลตัวแปรของคุณเองจะทำงานต่างออกไปและอาจล้มเหลวสำหรับตัวแปรอื่น เหตุผล คุณจะสามารถแก้ไขปัญหาได้อย่างเหมาะสม ทั้งนี้ขึ้นอยู่กับสาเหตุของความล้มเหลว นโยบายการแยกตัวแปรด้วยการตรวจสอบข้อความในข้อผิดพลาด
ตัวอย่างที่ 2 ความละเอียด
- แก้ไขข้อผิดพลาดหรือความล้มเหลวในนโยบายการดึงข้อมูลตัวแปรอย่างเหมาะสม
- ในตัวอย่างที่แสดงให้เห็นข้างต้น วิธีแก้ไขคือแก้ไขการกำหนดค่าเครือข่ายเป็น อนุญาตการรับส่งข้อมูลจาก Edge Message Processor ไปยังเซิร์ฟเวอร์แบ็กเอนด์ ดำเนินการโดย การเพิ่ม "ตัวประมวลผลข้อความ" ลงในรายการที่อนุญาต ที่อยู่ IP ในเซิร์ฟเวอร์แบ็กเอนด์ที่เจาะจง ตัวอย่างเช่น บน Linux คุณสามารถใช้ iptables เพื่ออนุญาตการรับส่งข้อมูลจาก ที่อยู่ IP ของผู้ประมวลผลข้อมูลข้อความในเซิร์ฟเวอร์แบ็กเอนด์
ตัวอย่างที่ 3: นโยบาย JavaCall ล้มเหลว
คราวนี้ลองมาดูอีกหนึ่งตัวอย่าง ซึ่งข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 เกิดจากข้อผิดพลาด ในนโยบายคำขอราคาเสนอ Java และดูวิธีแก้ปัญหา
- การติดตาม UI ต่อไปนี้แสดงรหัสสถานะ 500 เนื่องจากข้อผิดพลาดในนโยบายคำขอราคาเสนอ Java
- เลือกโฟลว์ชื่อ "ข้อผิดพลาด" ตามด้วยนโยบายคำขอราคาเสนอ Java ที่ล้มเหลว เพื่อดูรายละเอียดของข้อผิดพลาดดังที่แสดงในรูปด้านล่าง
- ในตัวอย่างนี้ พร็อพเพอร์ตี้ "error" ในส่วนคุณสมบัติแสดง ที่ล้มเหลวมาจากการใช้รหัสผ่านที่หมดอายุขณะเชื่อมต่อกับฐานข้อมูล Oracle จากภายในนโยบาย Javacallout ข้อความไฮไลต์ Java ของคุณเองนั้นจะทำงานแตกต่างออกไปและ ใส่ข้อความอื่นในพร็อพเพอร์ตี้ error
- ตรวจสอบโค้ดนโยบาย JavaCall และยืนยันการกำหนดค่าที่ถูกต้องที่จำเป็นต้องดำเนินการ
ตัวอย่างที่ 3 ความละเอียด
แก้ไขโค้ดหรือการกำหนดค่าข้อความไฮไลต์ของ Java อย่างเหมาะสมเพื่อหลีกเลี่ยงข้อยกเว้นรันไทม์ ใน ตัวอย่างความล้มเหลวของคำขอราคาเสนอ Java ที่แสดงให้เห็นด้านบน จะต้องใช้รหัสผ่านที่ถูกต้อง ในการเชื่อมต่อกับฐานข้อมูล Oracle เพื่อแก้ไขปัญหา
ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
ข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 อาจเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ด้วย ส่วนนี้ อธิบายวิธีแก้ปัญหาหากข้อผิดพลาดมาจากเซิร์ฟเวอร์แบ็กเอนด์
การวินิจฉัย
ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ทุกคน
สาเหตุของข้อผิดพลาดแบ็กเอนด์อื่นๆ อาจแตกต่างกันไปอย่างมาก คุณจะต้องวิเคราะห์แต่ละสถานการณ์ ได้อย่างอิสระ
- ยืนยันว่าข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ โปรดดูรายละเอียดในการระบุที่มาของปัญหา
- หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ดําเนินการต่อ หากข้อผิดพลาดเกิดขึ้นระหว่าง การดำเนินการกับนโยบาย โปรดไปที่ข้อผิดพลาดในการดำเนินการใน Edge นโยบาย
- ทำตามขั้นตอนด้านล่างโดยขึ้นอยู่กับว่าคุณมีสิทธิ์เข้าถึงเซสชันการติดตามสำหรับ API ที่ล้มเหลว หรือหากแบ็กเอนด์เป็นเซิร์ฟเวอร์ Node.js ให้ทำดังนี้
หากคุณไม่มีเซสชันการติดตามสำหรับการเรียก API ที่ล้มเหลว ให้ทำดังนี้
- หากการติดตาม UI ไม่พร้อมใช้งานสำหรับคำขอที่ล้มเหลว ให้ตรวจสอบเซิร์ฟเวอร์แบ็กเอนด์ เพื่อดูรายละเอียดเกี่ยวกับข้อผิดพลาด
- หากเป็นไปได้ ให้เปิดใช้โหมดแก้ไขข้อบกพร่องในเซิร์ฟเวอร์แบ็กเอนด์เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับ และสาเหตุ
หากคุณมีเซสชันการติดตามสำหรับการเรียก API ที่ล้มเหลว ให้ทำดังนี้
หากคุณมีเซสชันการติดตาม ขั้นตอนต่อไปนี้จะช่วยคุณวินิจฉัยปัญหา
- ในเครื่องมือการติดตาม ให้เลือกคำขอ API ที่ล้มเหลวกับเซิร์ฟเวอร์ภายใน 500 เกิดข้อผิดพลาด
- เลือกเฟส "การตอบกลับจากเซิร์ฟเวอร์เป้าหมาย" จากข้อผิดพลาด คําขอ API ดังที่แสดงในรูปด้านล่าง
- โปรดดูส่วน "เนื้อหาการตอบกลับ" เพื่อดูรายละเอียดเกี่ยวกับข้อผิดพลาด
- ในตัวอย่างนี้ เนื้อหาการตอบกลับซึ่งเป็นซองจดหมาย SOAP จะแสดงสตริงข้อผิดพลาดเป็น ข้อความ "ไม่ได้รับอนุญาต" สาเหตุที่เป็นไปได้มากที่สุดสำหรับปัญหานี้ คือ จะไม่มีการส่งข้อมูลเข้าสู่ระบบที่เหมาะสม (ชื่อผู้ใช้/รหัสผ่าน โทเค็นเพื่อการเข้าถึง ฯลฯ) ไปยัง ผู้ใช้ในเซิร์ฟเวอร์แบ็กเอนด์ ปัญหานี้แก้ไขได้โดยการส่งข้อมูลเข้าสู่ระบบที่ถูกต้องไปยัง เซิร์ฟเวอร์แบ็กเอนด์
หากแบ็กเอนด์เป็นเซิร์ฟเวอร์ Node.js
- หากแบ็กเอนด์เป็นเซิร์ฟเวอร์แบ็กเอนด์ Node.js ให้ตรวจสอบบันทึก Node.js
สำหรับพร็อกซี API ที่เจาะจงใน Edge UI (ทั้งผู้ใช้แบบสาธารณะและ Private Cloud สามารถ
ตรวจสอบบันทึกของ Node.js) หากคุณเป็นผู้ใช้ Edge Private Cloud คุณจะ
ยังสามารถตรวจสอบบันทึกโปรแกรมประมวลผลข้อความ
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
) เพื่อขอรายละเอียดเพิ่มเติม เกี่ยวกับข้อผิดพลาดดังกล่าว
ตัวเลือกบันทึก NodeJS ใน Edge UI - แท็บภาพรวมของพร็อกซี API
ความละเอียด
- เมื่อระบุสาเหตุของข้อผิดพลาดได้แล้ว ให้แก้ปัญหาในเซิร์ฟเวอร์แบ็กเอนด์
- หากเป็นเซิร์ฟเวอร์แบ็กเอนด์ Node.js ให้ทำดังนี้
- ตรวจสอบว่าเกิดข้อผิดพลาดจากโค้ดที่กำหนดเองหรือไม่ แล้วแก้ไขปัญหาหากเป็นไปได้
- หากข้อผิดพลาดไม่ได้เกิดจากโค้ดที่กำหนดเองของคุณ หรือหากคุณต้องการความช่วยเหลือ โปรดติดต่อ ทีมสนับสนุนของ Apigee
หากคุณต้องการความช่วยเหลือเพิ่มเติมในการแก้ปัญหา 500 เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ หรือคุณสงสัย ว่าเป็นปัญหาใน Edge โปรดติดต่อ Apigee การสนับสนุน
การระบุที่มาของปัญหา
ใช้หนึ่งในกระบวนการต่อไปนี้เพื่อดูว่าเกิดข้อผิดพลาดเซิร์ฟเวอร์ภายใน 500 หรือไม่ ระหว่างการบังคับใช้นโยบายภายในพร็อกซี API หรือโดยเซิร์ฟเวอร์แบ็กเอนด์
การใช้ Trace ใน UI
หมายเหตุ: ขั้นตอนในส่วนนี้สามารถดำเนินการได้ทั้งกับสาธารณะและ ผู้ใช้ Private Cloud
- หากปัญหายังคงอยู่ ให้เปิดใช้การติดตามใน UI สำหรับ API ที่ได้รับผลกระทบ
- เมื่อบันทึกการติดตามแล้ว ให้เลือกคำขอ API ที่แสดงโค้ดตอบกลับเป็น 500
- ตรวจสอบเฟสทั้งหมดของคำขอ API ที่ล้มเหลวและตรวจสอบว่าเฟสใดแสดงผล
500 ข้อผิดพลาดภายในเซิร์ฟเวอร์:
- หากเกิดข้อผิดพลาดขณะบังคับใช้นโยบาย ให้ไปที่ข้อผิดพลาดในการดำเนินการในนโยบาย Edge
- หากเซิร์ฟเวอร์แบ็กเอนด์ตอบสนองด้วยเซิร์ฟเวอร์ภายใน 500 ให้ไปยังข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
การใช้การตรวจสอบ API
หมายเหตุ: เฉพาะผู้ใช้ระบบคลาวด์สาธารณะเท่านั้นที่ทำตามขั้นตอนในส่วนนี้ได้
การตรวจสอบ API ช่วยให้คุณแยกส่วนที่เป็นปัญหาได้อย่างรวดเร็วเพื่อวินิจฉัยปัญหาด้านข้อผิดพลาด ประสิทธิภาพ และเวลาในการตอบสนอง รวมถึงแหล่งที่มาของปัญหา เช่น แอปนักพัฒนาซอฟต์แวร์, พร็อกซี API, เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API
ดูตัวอย่างสถานการณ์ที่แสดงวิธีแก้ปัญหา 5xx เกี่ยวกับ API โดยใช้การตรวจสอบ API
ตัวอย่างเช่น คุณอาจต้องการตั้งค่าการแจ้งเตือนเมื่อรหัสสถานะ 500 หรือข้อผิดพลาด steps.servicecallout.ExecutionFailed
รายการเกินเกณฑ์
การใช้การเข้าถึง NGINX บันทึก
หมายเหตุ: ขั้นตอนในส่วนนี้มีไว้สำหรับผู้ใช้ Edge Private Cloud เท่านั้น
นอกจากนี้ คุณยังสามารถดูบันทึกการเข้าถึง NGINX เพื่อให้ทราบว่ามีการส่งรหัสสถานะ 500 หรือไม่ ระหว่างการบังคับใช้นโยบายภายในพร็อกซี API หรือโดยเซิร์ฟเวอร์แบ็กเอนด์ นี่คือ มีประโยชน์อย่างยิ่งหากปัญหาดังกล่าวเคยเกิดขึ้นในอดีต หรือหากปัญหาเกิดขึ้นเป็นครั้งคราวและคุณ ไม่สามารถจับภาพการติดตามใน UI ได้ ใช้ขั้นตอนต่อไปนี้เพื่อระบุข้อมูลนี้จาก บันทึกการเข้าถึง NGINX:
- ตรวจสอบบันทึกการเข้าถึง NGINX (
/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log
) - ค้นหาว่ามีข้อผิดพลาด 500 รายการสำหรับพร็อกซี API ที่ระบุที่
- หากมีข้อผิดพลาด 500 รายการ ให้ตรวจสอบว่าข้อผิดพลาดนั้นเป็นข้อผิดพลาดเกี่ยวกับนโยบายหรือข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์เป้าหมาย
ดังที่แสดงด้านล่าง
ข้อความตัวอย่างที่แสดงข้อผิดพลาดเกี่ยวกับนโยบาย
รายการตัวอย่างที่แสดงข้อผิดพลาดของเซิร์ฟเวอร์เป้าหมาย
- เมื่อคุณระบุว่าเป็นข้อผิดพลาดเกี่ยวกับนโยบายหรือเซิร์ฟเวอร์เป้าหมายแล้ว ให้ทำดังนี้
- ดำเนินการต่อด้วยข้อผิดพลาดในการดำเนินการในนโยบาย Edge หาก เป็นข้อผิดพลาดด้านนโยบาย
- ดำเนินการต่อด้วยข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์หากเป็นเป้าหมาย ข้อผิดพลาดของเซิร์ฟเวอร์