คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
วิดีโอ
ดูวิดีโอต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขข้อผิดพลาดภายในเซิร์ฟเวอร์ 500
วิดีโอ | คำอธิบาย |
---|---|
บทนำ | แนะนำข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 รายการและสาเหตุที่เป็นไปได้ นอกจากนี้ยังแสดงให้เห็นข้อผิดพลาดภายในเซิร์ฟเวอร์ภายใน 500 แบบเรียลไทม์ พร้อมด้วยขั้นตอนในการแก้ปัญหาและข้อผิดพลาดดังกล่าว |
จัดการข้อผิดพลาดเกี่ยวกับข้อความไฮไลต์บริการและการแยกตัวแปร | แสดงข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 จำนวน 2 รายการที่เกิดจากนโยบายคำขอราคาเสนอบริการและการดึงข้อมูลตัวแปร รวมทั้งแสดงวิธีแก้ปัญหาและข้อผิดพลาดเหล่านี้ |
จัดการข้อผิดพลาดเกี่ยวกับนโยบาย 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 ส่วนตัวและระบบคลาวด์สาธารณะ |
ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ | เซิร์ฟเวอร์แบ็กเอนด์อาจล้มเหลวด้วยเหตุผลบางอย่าง | ผู้ใช้ Edge ส่วนตัวและระบบคลาวด์สาธารณะ |
ข้อผิดพลาดในการดำเนินการในนโยบาย Edge
นโยบายภายในพร็อกซี API อาจล้มเหลวด้วยเหตุผลบางอย่าง ส่วนนี้จะอธิบายวิธีการแก้ปัญหาหากข้อผิดพลาด 500 ของเซิร์ฟเวอร์ภายในระหว่างการดำเนินการของนโยบาย
การวินิจฉัย
ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ระบบคลาวด์ส่วนตัวและผู้ใช้ระบบคลาวด์สาธารณะ
ถ้าคุณมีเซสชัน UI การติดตามสำหรับข้อผิดพลาด ให้ทำดังนี้
- ตรวจสอบว่าข้อผิดพลาดเกิดจากการดำเนินการของนโยบาย โปรดดูรายละเอียดในการระบุแหล่งที่มาของปัญหา
- หากเกิดข้อผิดพลาดระหว่างการดำเนินการตามนโยบาย ให้ดำเนินการต่อ.. หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
- เลือกคำขอ API ที่ล้มเหลวโดยมีข้อผิดพลาด 500 เซิร์ฟเวอร์ภายในในการติดตาม
- ตรวจสอบคำขอและเลือกนโยบายที่เฉพาะเจาะจงซึ่งล้มเหลวหรือขั้นตอนที่ชื่อ "ข้อผิดพลาด" ซึ่งต่อจากนโยบายที่ล้มเหลวในการติดตาม
- ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดโดยตรวจสอบช่อง "ข้อผิดพลาด" ในส่วนพร็อพเพอร์ตี้หรือเนื้อหาข้อผิดพลาด
- พยายามระบุสาเหตุของปัญหาโดยใช้รายละเอียดที่รวบรวมเกี่ยวกับข้อผิดพลาด
ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ Private Cloud เท่านั้น
หากไม่มีเซสชัน UI การติดตาม ให้ทำดังนี้
- ตรวจสอบว่าเกิดข้อผิดพลาดระหว่างการดำเนินการตามนโยบาย โปรดดูรายละเอียดในการระบุแหล่งที่มาของปัญหา
- หากข้อผิดพลาดเกิดจากการดำเนินการนโยบาย ให้ดำเนินการต่อ หากเกิดข้อผิดพลาดระหว่างการดำเนินการของนโยบาย ให้ดำเนินการต่อ หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
- ใช้บันทึกการเข้าถึง NGINX ตามที่อธิบายไว้ในการระบุแหล่งที่มาของปัญหาเพื่อระบุนโยบายความล้มเหลวในพร็อกซี API รวมถึงรหัสข้อความคำขอที่ไม่ซ้ำกัน
- ตรวจสอบบันทึกตัวประมวลผลข้อความ (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) และค้นหารหัสข้อความคำขอที่ไม่ซ้ำกันในบันทึก - หากพบรหัสข้อความคำขอที่ไม่ซ้ำกัน โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุของความล้มเหลว
ความละเอียด
หากคุณได้ระบุสาเหตุของปัญหากับนโยบายแล้ว ให้ลองแก้ไขปัญหาโดยการแก้ไขนโยบายและทำให้พร็อกซีใช้งานได้อีกครั้ง
ตัวอย่างต่อไปนี้แสดงถึงวิธีระบุสาเหตุและวิธีแก้ปัญหาประเภทต่างๆ
หากต้องการความช่วยเหลือเพิ่มเติมในการแก้ปัญหา 500 Internal Server Error หรือสงสัยว่าเป็นปัญหาใน 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 ของเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการให้ชี้ไปยังทรัพยากรที่ถูกต้องและมีอยู่
- หากทรัพยากรไม่พร้อมใช้งานชั่วคราวเท่านั้น ให้ลองสร้างคำขอ API เมื่อทรัพยากรพร้อมใช้งาน
ตัวอย่างที่ 2: ดำเนินการในนโยบายการดึงข้อมูลตัวแปรไม่สำเร็จ
ลองมาดูตัวอย่างอีกตัวอย่างหนึ่งกันว่า 500 Internal Server Error เกิดจากข้อผิดพลาดในนโยบายการดึงข้อมูลตัวแปรหรือไม่ และดูวิธีแก้ปัญหา
- การติดตามต่อไปนี้ในเซสชัน UI แสดงรหัสสถานะ 500 เนื่องจากเกิดข้อผิดพลาดในนโยบายการแยกตัวแปร
- เลือกนโยบายการดึงข้อมูลตัวแปรที่ล้มเหลว เลื่อนลงแล้วดูที่ส่วน "เนื้อหาข้อผิดพลาด" เพื่อดูรายละเอียดเพิ่มเติม ดังนี้
- เนื้อหาข้อผิดพลาดระบุว่าตัวแปร "service callout.oamCookieValidationResponse" ไม่พร้อมใช้งานในนโยบายการดึงข้อมูลตัวแปร ตามชื่อของตัวแปร ตัวแปรควรมีการตอบสนองของนโยบายคำขอราคาเสนอบริการก่อนหน้า
- เลือกนโยบายคำขอราคาเสนอบริการในการติดตาม แล้วคุณอาจพบว่าไม่ได้ตั้งค่าตัวแปร "serviceCallout.oamCookieValidationResponse" นี่เป็นการบ่งชี้ว่าการเรียกไปยังบริการแบ็กเอนด์ล้มเหลว ซึ่งส่งผลให้ตัวแปรการตอบกลับว่างเปล่า
- แม้ว่านโยบายคำขอราคาเสนอบริการจะล้มเหลว แต่การดำเนินการนโยบายหลังจากนโยบายคำขอราคาเสนอบริการยังคงดำเนินต่อไป เนื่องจากแฟล็ก "continueOnError" ในนโยบายคำขอราคาเสนอบริการเป็น "จริง" ดังที่แสดงด้านล่าง
<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 จากตัวประมวลผลข้อความไปยังเซิร์ฟเวอร์แบ็กเอนด์ คำสั่ง telnet แสดงข้อผิดพลาด "การเชื่อมต่อหมดเวลา" ดังที่แสดงด้านล่าง
telnet mybackend.domain.com 443 Trying XX.XX.XX.XX... telnet: connect to address XX.XX.XX.XX: Connection timed out
โดยทั่วไป ข้อผิดพลาดนี้จะเกิดขึ้นในกรณีต่อไปนี้
- เมื่อไม่มีการกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์ให้อนุญาตการรับส่งข้อมูลจากตัวประมวลผลข้อความ Edge
- หากเซิร์ฟเวอร์แบ็กเอนด์ไม่ฟังในพอร์ตที่ระบุ
ในตัวอย่างที่แสดงด้านบน แม้ว่านโยบายการดึงข้อมูลตัวแปรจะล้มเหลว แต่สาเหตุจริงคือ Edge เชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ในนโยบายคำขอราคาเสนอบริการไม่ได้ และสาเหตุของความล้มเหลวนี้ก็คือไม่มีการกำหนดค่าเซิร์ฟเวอร์แบ็กเอนด์แบ็กเอนด์ให้อนุญาตการรับส่งข้อมูลจาก Edge Message Processors อยู่
นโยบายตัวแปรการดึงข้อมูลของคุณเองจะทำงานแตกต่างกันและอาจล้มเหลวเนื่องจากสาเหตุอื่น คุณแก้ปัญหาได้อย่างเหมาะสมโดยอิงตามสาเหตุที่นโยบายการแยกตัวแปรดึงข้อมูลทำไม่สำเร็จโดยการตรวจสอบข้อความในพร็อพเพอร์ตี้ข้อผิดพลาด
ตัวอย่างที่ 2 ความละเอียด
- โปรดแก้ไขสาเหตุของข้อผิดพลาดหรือความล้มเหลวในนโยบายการดึงข้อมูลตัวแปรอย่างเหมาะสม
- ในตัวอย่างที่แสดงให้เห็นด้านบน วิธีแก้ปัญหาคือการแก้ไขการกำหนดค่าเครือข่ายเพื่ออนุญาตการรับส่งข้อมูลจาก Edge Message Processors ไปยังเซิร์ฟเวอร์แบ็กเอนด์ ซึ่งทำได้โดยเพิ่มที่อยู่ IP ของผู้ประมวลผลข้อความไว้ในรายการที่อนุญาตในเซิร์ฟเวอร์แบ็กเอนด์ที่เจาะจง เช่น ใน Linux คุณอาจใช้ iptables เพื่ออนุญาตการรับส่งข้อมูลจากที่อยู่ IP ของผู้ประมวลผลข้อความในเซิร์ฟเวอร์แบ็กเอนด์
ตัวอย่างที่ 3: ทำงานล้มเหลวในนโยบาย Javaที่แตกต่างกัน
มาดูตัวอย่างเพิ่มเติมกันอีก 1 ตัวอย่างว่า 500 Internal Server Error เกิดจากข้อผิดพลาดในนโยบายการเรียก Java ได้อย่างไร และดูวิธีแก้ปัญหา
- การติดตาม UI ต่อไปนี้แสดงรหัสสถานะ 500 เนื่องจากข้อผิดพลาดใน Java Caption Policy
- เลือกโฟลว์ที่ชื่อว่า "Error" ตามด้วยนโยบายไฮไลต์ของ Java ที่ล้มเหลวเพื่อรับรายละเอียดข้อผิดพลาดดังที่แสดงในรูปด้านล่าง
- ในตัวอย่างนี้ พร็อพเพอร์ตี้ "error" ใต้ส่วนคุณสมบัติเผยให้เห็นว่าความล้มเหลวเกิดจากการใช้รหัสผ่านหมดอายุขณะเชื่อมต่อกับฐานข้อมูล Oracle จากภายในนโยบาย Javaที่แตกต่างกัน ไฮไลต์ Java ของคุณเองจะทำงานแตกต่างกันและจะสร้างข้อความอื่นในพร็อพเพอร์ตี้ error
- โปรดตรวจสอบโค้ดนโยบาย JavaCaption และยืนยันการกำหนดค่าที่ถูกต้องซึ่งจำเป็นต้องใช้
ตัวอย่างที่ 3 ความละเอียด
แก้ไขโค้ดข้อความไฮไลต์หรือการกำหนดค่าของ Java อย่างเหมาะสมเพื่อหลีกเลี่ยงข้อยกเว้นรันไทม์ ในตัวอย่างที่แสดงความล้มเหลวของไฮไลต์ Java ด้านบน จะต้องมีการใช้รหัสผ่านที่ถูกต้องสำหรับการเชื่อมต่อกับฐานข้อมูล Oracle เพื่อแก้ไขปัญหา
ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
500 ข้อผิดพลาดภายในเซิร์ฟเวอร์อาจเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ด้วย ส่วนนี้จะอธิบายวิธีการแก้ปัญหาหากข้อผิดพลาดมาจากเซิร์ฟเวอร์แบ็กเอนด์
การวินิจฉัย
ขั้นตอนการวินิจฉัยสำหรับผู้ใช้ทุกคน
สาเหตุของข้อผิดพลาดแบ็กเอนด์อื่นๆ อาจแตกต่างกันอย่างมาก คุณจะต้องวิเคราะห์แต่ละสถานการณ์แยกกัน
- ยืนยันว่าข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ โปรดดูรายละเอียดในการระบุแหล่งที่มาของปัญหา
- หากข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์ ให้ดําเนินการต่อ หากข้อผิดพลาดเกิดขึ้นระหว่างการดำเนินการนโยบาย ให้ไปที่ข้อผิดพลาดในการดำเนินการในนโยบาย Edge
- ทำตามขั้นตอนด้านล่างโดยขึ้นอยู่กับว่าคุณมีสิทธิ์เข้าถึงเซสชันการติดตามสำหรับ API ที่ล้มเหลวหรือไม่ หรือแบ็กเอนด์เป็นเซิร์ฟเวอร์ Node.js หรือไม่
หากคุณไม่มีเซสชันการติดตามสำหรับการเรียก API ที่ล้มเหลว ให้ทำดังนี้
- หากการติดตาม UI ไม่พร้อมใช้งานสำหรับคำขอที่ล้มเหลว ให้ตรวจสอบบันทึกเซิร์ฟเวอร์แบ็กเอนด์เพื่อดูรายละเอียดเกี่ยวกับข้อผิดพลาด
- หากเป็นไปได้ ให้เปิดใช้โหมดแก้ไขข้อบกพร่องในเซิร์ฟเวอร์แบ็กเอนด์เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดและสาเหตุ
หากคุณมีเซสชันการติดตามสำหรับการเรียก API ที่ล้มเหลว ให้ทำดังนี้
หากคุณมีเซสชันการติดตาม ขั้นตอนต่อไปนี้จะช่วยคุณในการวินิจฉัยปัญหา
- ในเครื่องมือติดตาม ให้เลือกคำขอ API ที่ล้มเหลวโดยมีข้อผิดพลาด 500 ของเซิร์ฟเวอร์ภายใน
- เลือกเฟส "การตอบกลับที่ได้รับจากเซิร์ฟเวอร์เป้าหมาย" จากคำขอ API ที่ล้มเหลวดังที่แสดงในรูปภาพด้านล่าง
- ตรวจสอบส่วน "เนื้อหาการตอบกลับ" เพื่อดูรายละเอียดเกี่ยวกับข้อผิดพลาด
- ในตัวอย่างนี้ เนื้อหาการตอบกลับซึ่งเป็น SOAP Envelope จะแสดงสตริงข้อผิดพลาดเป็นข้อความ "ไม่ได้รับอนุญาต" สาเหตุที่เป็นไปได้มากที่สุดสำหรับปัญหานี้คือผู้ใช้ไม่ได้ส่งข้อมูลเข้าสู่ระบบที่เหมาะสม (ชื่อผู้ใช้/รหัสผ่าน โทเค็นเพื่อการเข้าถึง ฯลฯ) ปัญหานี้แก้ไขได้โดยการส่งข้อมูลเข้าสู่ระบบที่ถูกต้องไปยังเซิร์ฟเวอร์แบ็กเอนด์
หากแบ็กเอนด์เป็นเซิร์ฟเวอร์ Node.js ให้ทำดังนี้
- หากแบ็กเอนด์เป็นเซิร์ฟเวอร์แบ็กเอนด์ของ Node.js ให้ตรวจสอบบันทึก Node.js เพื่อหาพร็อกซี API ที่ต้องการใน UI ของ Edge (ทั้งผู้ใช้ระบบคลาวด์สาธารณะและ 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 Internal Server Error หรือสงสัยว่าเป็นปัญหาใน Edge โปรดติดต่อทีมสนับสนุนของ Apigee
การระบุที่มาของปัญหา
ใช้ขั้นตอนใดขั้นตอนหนึ่งต่อไปนี้เพื่อดูว่า 500 เกิดข้อผิดพลาดของเซิร์ฟเวอร์ภายในระหว่างการดำเนินการของนโยบายภายในพร็อกซี API หรือโดยเซิร์ฟเวอร์แบ็กเอนด์
การใช้การติดตามใน UI
หมายเหตุ: ขั้นตอนในส่วนนี้ทำได้โดยผู้ใช้ทั้งแบบสาธารณะและ Private Cloud
- หากยังคงพบปัญหาอยู่ ให้เปิดใช้การติดตามใน UI สำหรับ API ที่ได้รับผลกระทบ
- เมื่อคุณบันทึกการติดตามแล้ว ให้เลือกคำขอ API ที่แสดงโค้ดตอบกลับเป็น 500
- ไปยังทุกเฟสของคำขอ API ที่ล้มเหลว แล้วตรวจสอบว่าเฟสใดแสดงข้อผิดพลาด 500 ข้อผิดพลาดเซิร์ฟเวอร์ภายใน ดังนี้
- หากเกิดข้อผิดพลาดระหว่างการดำเนินการของนโยบาย ให้ไปที่ข้อผิดพลาดในการดำเนินการในนโยบาย Edge
- หากเซิร์ฟเวอร์แบ็กเอนด์ตอบกลับด้วยเซิร์ฟเวอร์ภายใน 500 ให้ไปที่ข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์
การใช้ API Monitoring
หมายเหตุ: ขั้นตอนในส่วนนี้จะดำเนินการโดยผู้ใช้ Cloud สาธารณะเท่านั้น
การตรวจสอบ API ช่วยให้คุณแยกส่วนที่เป็นปัญหาได้อย่างรวดเร็วเพื่อวิเคราะห์ปัญหาเกี่ยวกับข้อผิดพลาด ประสิทธิภาพ และเวลาในการตอบสนองและแหล่งที่มา เช่น แอปของนักพัฒนาซอฟต์แวร์, พร็อกซี API, เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API
ดูสถานการณ์ตัวอย่างที่แสดงวิธีแก้ปัญหา 5xx เกี่ยวกับ API โดยใช้ API Monitoring
ตัวอย่างเช่น คุณอาจต้องการตั้งการแจ้งเตือนเมื่อจำนวนรหัสสถานะ 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 หากเป็นข้อผิดพลาดของนโยบาย
- ดำเนินการต่อไปยังข้อผิดพลาดในเซิร์ฟเวอร์แบ็กเอนด์ หากเป็นข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์เป้าหมาย