คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
วิดีโอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด 503 ได้ในวิดีโอต่อไปนี้
| วิดีโอ | คำอธิบาย |
|---|---|
| แก้ปัญหาและแก้ไขข้อผิดพลาด 503 ไม่พร้อมให้บริการ - NoActiveTargets | ดูข้อมูลเกี่ยวกับสิ่งต่อไปนี้
|
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะการตอบกลับ HTTP 503 พร้อมข้อความ Service Unavailable และรหัสข้อผิดพลาด NoActiveTargets สำหรับคำขอพร็อกซี API
ข้อความแสดงข้อผิดพลาด
คุณจะเห็นการตอบกลับข้อผิดพลาดต่อไปนี้
HTTP/1.1 503 Service Unavailable
คุณจะเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้ในการตอบกลับ HTTP
{
"fault": {
"faultstring": "The Service is temporarily unavailable",
"detail": {
"errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
}
}
}
สาเหตุที่เป็นไปได้
โดยปกติแล้ว คุณจะเห็นการตอบกลับ HTTP 503 Service Unavailable ที่มีรหัสข้อผิดพลาด NoActiveTargets เมื่อใช้เซิร์ฟเวอร์เป้าหมายอย่างน้อย 1 รายการในการกำหนดค่าปลายทางเป้าหมายในพร็อกซี API
เพลย์บุ๊กนี้ครอบคลุมถึง 503 Service Unavailable ที่มีรหัสข้อผิดพลาด NoActiveTargets ซึ่งเกิดจากความล้มเหลวในการตรวจสอบสถานะ โปรดดูสาเหตุอื่นๆ ที่ทำให้เกิดข้อผิดพลาดนี้ในคู่มือนี้
การตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จ
ระบบจะสังเกตเห็นความล้มเหลวในการตรวจสอบสถานะก็ต่อเมื่อคุณได้กำหนดค่า Health Monitor เป็นส่วนหนึ่งของการกำหนดค่าการโหลดบาลานซ์ของเซิร์ฟเวอร์เป้าหมายในปลายทางเป้าหมายของ API Proxy
เมื่อเซิร์ฟเวอร์เป้าหมายไม่ผ่านการตรวจสอบสถานะ Edge จะเพิ่มจำนวนครั้งที่เซิร์ฟเวอร์นั้นล้มเหลว
หากจำนวนการตรวจสอบประสิทธิภาพการทำงานที่ไม่สำเร็จสำหรับเซิร์ฟเวอร์นั้นถึงเกณฑ์ที่กำหนดไว้ล่วงหน้า (<MaxFailures>)
Message Processor จะบันทึกข้อความเตือนตามที่แสดงด้านล่างลงในไฟล์บันทึก
Apigee-Timer-7 WARN ADAPTORS.HTTP.FLOW - LBServer.incrementFailureCount() : Max failure count(10) reached for server : mocktarget2{Environment=<orgname>__prod,Application=mocktargetapigee__1,Target=default}
ข้อความประกาศเตือนจะให้ข้อมูลต่อไปนี้
ซึ่งจะช่วยให้คุณทราบว่าเซิร์ฟเวอร์เป้าหมายใดที่เข้าถึงจำนวน MaxFailure
- ชื่อเซิร์ฟเวอร์เป้าหมาย
- ชื่อองค์กรและสภาพแวดล้อม
- ชื่อพร็อกซี API
- ชื่อปลายทางเป้าหมาย
หลังจากนั้น Edge จะหยุดส่งคำขอเพิ่มเติมไปยังเซิร์ฟเวอร์นั้น เมื่อเซิร์ฟเวอร์เป้าหมายทั้งหมด
ที่กำหนดค่าไว้ในการกำหนดค่า LoadBalancer มีจำนวนถึง MaxFailure คำขอ API ที่ตามมา
จะได้รับการตอบกลับด้วย 503 Service Unavailable พร้อมรหัสข้อผิดพลาด NoActiveTargets
การใช้ Health Monitor ช่วยให้ Apigee Edge รวมเซิร์ฟเวอร์เป้าหมายกลับไปไว้ใน การหมุนเวียนโดยอัตโนมัติเมื่อเซิร์ฟเวอร์ทำงานได้ปกติ โดยไม่ต้องติดตั้งใช้งานพร็อกซี API อีกครั้ง
สาเหตุที่เป็นไปได้ที่ทำให้การตรวจสอบสถานะล้มเหลวมีดังนี้
| สาเหตุ | คำอธิบาย | ผู้ที่มีสิทธิ์ทำตามขั้นตอนการแก้ปัญหา |
|---|---|---|
| ข้อผิดพลาดการเชื่อมต่อหมดเวลา | Message Processor เชื่อมต่อกับเซิร์ฟเวอร์เป้าหมายไม่ได้ภายในระยะหมดเวลาที่ระบุ ในการกำหนดค่า LoadBalancer | ผู้ใช้ Edge Private Cloud |
| คำขอที่ปลอดภัยในพอร์ตที่ไม่ปลอดภัย |
|
ผู้ใช้ Edge Private Cloud |
| คำขอที่ไม่ปลอดภัยในพอร์ตที่ปลอดภัย |
|
ผู้ใช้ Edge Private Cloud |
| Health Check API ตอบกลับด้วยข้อผิดพลาด | หาก API การตรวจสอบสถานะตอบกลับด้วยข้อผิดพลาดหรือโค้ดตอบกลับอื่นๆ นอกเหนือจากที่ระบุไว้ในองค์ประกอบ SuccessResponse ของเครื่องมือตรวจสอบสถานะ | ผู้ใช้ Edge Private Cloud |
ขั้นตอนการวินิจฉัยที่พบบ่อย
กำหนดรหัสข้อความของคำขอที่ไม่สำเร็จ
เครื่องมือติดตาม
วิธีกำหนดรหัสข้อความของคำขอที่ไม่สำเร็จโดยใช้เครื่องมือติดตาม
- เปิดใช้เซสชันการติดตาม เรียก API และทำซ้ำปัญหา - 503 ไม่พร้อมให้บริการพร้อมรหัสข้อผิดพลาด NoActiveTargets
- เลือกคำขอที่ล้มเหลวรายการใดรายการหนึ่ง
- ไปที่เฟส AX และระบุรหัสข้อความ (
X-Apigee.Message-ID) ของคำขอโดยเลื่อนลงในส่วนรายละเอียดเฟสตามที่แสดงในรูปภาพต่อไปนี้
บันทึกการเข้าถึง NGINX
วิธีกำหนดรหัสข้อความของคำขอที่ไม่สำเร็จโดยใช้บันทึกการเข้าถึง NGINX
นอกจากนี้ คุณยังดูบันทึกการเข้าถึง NGINX เพื่อกำหนดรหัสข้อความสำหรับข้อผิดพลาด 503 ได้ด้วย ซึ่งจะมีประโยชน์อย่างยิ่งหากปัญหาเกิดขึ้นในอดีตหรือหากปัญหาเกิดขึ้นเป็นระยะๆ และคุณไม่สามารถบันทึกการติดตามใน UI ได้ ทำตามขั้นตอนต่อไปนี้เพื่อดูข้อมูลนี้จากบันทึกการเข้าถึง NGINX
- ตรวจสอบบันทึกการเข้าถึง NGINX: (
/opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log) - ค้นหาว่ามีข้อผิดพลาด 503 สำหรับพร็อกซี API ที่เฉพาะเจาะจงในช่วงระยะเวลาหนึ่งๆ หรือไม่ (หากปัญหาเกิดขึ้นในอดีต) หรือมีคำขอใดที่ยังคงล้มเหลวด้วยข้อผิดพลาด 503 หรือไม่
- หากมีข้อผิดพลาด 503 ที่มีข้อความ X-Apigee-fault-code messaging.adaptors.http.flow.NoActiveTargets
ให้จดรหัสข้อความสำหรับคำขอดังกล่าวอย่างน้อย 1 รายการตามที่แสดงในตัวอย่างต่อไปนี้
รายการตัวอย่างที่แสดงข้อผิดพลาด 503
ข้อความแสดงข้อผิดพลาดที่พบบ่อย
เมื่อใช้เซิร์ฟเวอร์เป้าหมายและเกิดข้อผิดพลาดขณะที่ Message Processor พยายาม เชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ คุณจะเห็นข้อความแสดงข้อผิดพลาดทั่วไป 2-3 รายการใน บันทึกของ Message Processor ระบบจะบันทึกข้อผิดพลาดเหล่านี้หลังจากข้อความข้อยกเว้น/ข้อผิดพลาดจริง ที่ทำให้เกิดความล้มเหลว
ข้อความแสดงข้อผิดพลาดที่พบบ่อยซึ่งสังเกตได้ในบันทึกของ Message Processor
(/opt/apigee/var/log/edge-message-processor/logs/system.log) สำหรับ
503 บริการไม่พร้อมใช้งานที่มีรหัสข้อผิดพลาด NoActiveTargets
มีดังนี้
org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 INFO ADAPTORS.HTTP.FLOW - LBTargetRequestSender.sendRequest() : Failed to send request to target servers : [demo-target] for default{Organization=myorgEnvironment=prod,Application=TestTargetServer__2} org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - LBTargetRequestSender.sendRequest() : No Active Target server Found for default{Organization=myorgEnvironment=prod,Application=TestTargetServer__2} org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - LBTargetRequestSender.sendRequest() : Unexpected error while sending request com.apigee.errors.http.server.ServiceUnavailableException: The Service is temporarily unavailable at com.apigee.messaging.adaptors.http.flow.data.LBTargetRequestSender.sendRequest(LBTargetRequestSender.java:299) at com.apigee.messaging.adaptors.http.flow.data.LBTargetRequestSender.access$400(LBTargetRequestSender.java:57) …<snipped>
ข้อความแสดงข้อผิดพลาดเหล่านี้บ่งชี้ว่าส่งคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์ไม่ได้เนื่องจาก ไม่สำเร็จ ด้วยเหตุนี้ Message Processor จึงส่ง 503 Service Unavailable พร้อมรหัสข้อผิดพลาด NoActiveTargets เป็นการตอบกลับไคลเอ็นต์
สาเหตุ: การเชื่อมต่อหมดเวลา
การวินิจฉัย
- ระบุรหัสข้อความของคำขอที่ไม่สำเร็จ
- ค้นหารหัสข้อความในบันทึกของ Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log) - คุณจะเห็นข้อความแสดงข้อผิดพลาดที่พบบ่อยซึ่งสอดคล้องกับรหัสข้อความ อย่างไรก็ตาม
หากต้องการทราบสาเหตุที่แท้จริงของการตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จ ให้เลื่อนขึ้นไปเหนือ
ข้อความแสดงข้อผิดพลาดที่พบบ่อยเหล่านี้ แล้วตรวจสอบข้อผิดพลาดของ HEALTH MONITOR
ตัวอย่างเช่น ข้อความแสดงข้อผิดพลาดของ HEALTH MONITOR ต่อไปนี้บ่งชี้ว่า Message Processor ล้มเหลว เนื่องจากข้อผิดพลาดการเชื่อมต่อหมดเวลาเมื่อส่งคำขอ API ตรวจสอบสถานะ
Apigee-Timer-6 ERROR SERVICES.HEALTH_MONITOR - HTTPMonitor.getResponseFromCache() : Error sending request Request URL : https://<BackendServer-Hostname>:443/status java.net.ConnectException: Connection timed out (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) …<snipped>หากข้อผิดพลาดนี้เกิดขึ้นซ้ำตาม
MaxFailureจำนวนครั้งที่กำหนดค่าไว้ในเครื่องมือตรวจสอบสถานะ คุณจะเห็นข้อความประกาศเตือนดังนี้Apigee-Timer-7 WARN ADAPTORS.HTTP.FLOW - LBServer.incrementFailureCount() : Max failure count(10) reached for server : mocktarget2{Environment=<orgname>__prod,Application=mocktargetapigee__1,Target=default}โปรดอ่านข้อมูลที่ระบุในข้อความเตือนอย่างละเอียด ตรวจสอบว่าถึงจำนวน
MaxFailureสำหรับเซิร์ฟเวอร์เป้าหมายที่ใช้ในพร็อกซี API ที่เฉพาะเจาะจงซึ่งคุณได้รับ โค้ดตอบกลับ 503 ที่มีรหัสข้อผิดพลาด NoActiveTargets - ในตัวอย่างด้านบน การตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จเนื่องจากข้อผิดพลาด
connection timed outตรวจสอบว่าคุณเชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ที่เฉพาะเจาะจงได้โดยตรงจากแต่ละ Message Processor โดยใช้คำสั่งtelnetหรือไม่ - หากเชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ได้ คุณอาจเห็นข้อความเช่น เชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์แล้ว จากนั้นปัญหาอาจเป็นปัญหาชั่วคราวและ อาจได้รับการแก้ไขแล้วหรือเป็นปัญหาที่เกิดขึ้นเป็นครั้งคราว ทำขั้นตอนที่ 4 ซ้ำ 2-3 ครั้ง (10 ครั้งขึ้นไป) และตรวจสอบเอาต์พุต
- หากไม่มีข้อผิดพลาดในคำสั่ง
telnetอย่างต่อเนื่อง แสดงว่าปัญหาได้รับการแก้ไขแล้ว ตรวจสอบอีกครั้งว่าการตรวจสอบสถานะล้มเหลวหยุดลงแล้วหรือไม่ หากใช่ คุณก็ไม่ต้องดำเนินการใดๆ เพิ่มเติม - หากคุณเชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ด้วยคำสั่ง
telnetไม่ได้เป็นระยะๆ แสดงว่าอาจเกิดปัญหาเครือข่ายหรือเซิร์ฟเวอร์แบ็กเอนด์อาจทำงานหนัก - หากคุณเชื่อมต่อกับเซิร์ฟเวอร์แบ็กเอนด์ด้วยคำสั่ง
telnetไม่ได้ แสดงว่าอาจเป็นเพราะระบบไม่อนุญาตการรับส่งข้อมูลจากตัวประมวลผลข้อความในเซิร์ฟเวอร์แบ็กเอนด์ที่เฉพาะเจาะจง
telnet <BackendServer-HostName> 443
ความละเอียด
หากพบข้อผิดพลาด connection timed out อย่างต่อเนื่อง โปรดตรวจสอบว่าเซิร์ฟเวอร์แบ็กเอนด์ไม่มีข้อจำกัดของไฟร์วอลล์และอนุญาตการรับส่งข้อมูลจากตัวประมวลผลข้อความ Apigee Edge
เช่น ใน Linux คุณสามารถใช้ iptables เพื่ออนุญาตการรับส่งข้อมูลจาก
ที่อยู่ IP ของตัวประมวลผลข้อความในเซิร์ฟเวอร์แบ็กเอนด์
หากปัญหายังคงอยู่ โปรดประสานงานกับผู้ดูแลเครือข่ายเพื่อระบุและแก้ไขปัญหา หากต้องการความช่วยเหลือเพิ่มเติมจาก Apigee โปรดติดต่อทีมสนับสนุนของ Apigee
สาเหตุ: คำขอที่ปลอดภัยในพอร์ตที่ไม่ปลอดภัย
การวินิจฉัย
- ระบุรหัสข้อความของคำขอที่ไม่สำเร็จ
- ค้นหารหัสข้อความในบันทึกของ Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log) - คุณจะเห็นข้อความแสดงข้อผิดพลาดที่พบบ่อยที่สอดคล้องกับรหัสข้อความ
อย่างไรก็ตาม หากต้องการทราบสาเหตุที่แท้จริงของการตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จ ให้เลื่อนขึ้นไปเหนือ
ข้อความแสดงข้อผิดพลาดที่พบบ่อยเหล่านี้ แล้วตรวจสอบข้อผิดพลาดของ HEALTH MONITOR
เช่น คุณอาจเห็นข้อผิดพลาด HEALTH MONITOR ดังที่แสดงด้านล่าง
Apigee-Timer-1 ERROR SERVICES.HEALTH_MONITOR - HTTPMonitor.getResponseFromCache() : Error sending request Request URL : https://mocktarget.apigee.net:80/status javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710) at sun.security.ssl.InputRecord.read(InputRecord.java:527) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397) …<snipped>หากข้อผิดพลาดนี้เกิดขึ้นซ้ำตาม
MaxFailureจำนวนครั้งที่กำหนดค่าไว้ในเครื่องมือตรวจสอบสถานะ คุณจะเห็นข้อความประกาศเตือนดังนี้Apigee-Timer-7 WARN ADAPTORS.HTTP.FLOW - LBServer.incrementFailureCount() : Max failure count(10) reached for server : mocktarget{Environment=<orgname>__prod,Application=mocktargetapigee__1,Target=default}โปรดอ่านข้อมูลที่ระบุในข้อความคำเตือนอย่างละเอียด ตรวจสอบว่าถึงจำนวน
MaxFailureสำหรับเซิร์ฟเวอร์เป้าหมายที่ใช้ในพร็อกซี API ที่เฉพาะเจาะจงซึ่งคุณได้รับ โค้ดตอบกลับ 503 ที่มีรหัสข้อผิดพลาด NoActiveTargets - การตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จเนื่องจากข้อผิดพลาดต่อไปนี้
Error sending request Request URL : https://mocktarget.apigee.net:80/statuscode/200 javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?ข้อความแสดงข้อผิดพลาดและ URL ระบุสาเหตุของปัญหานี้ว่ามีการเรียกที่ปลอดภัย (HTTPS) ในพอร์ต 80 ที่ไม่ปลอดภัย
ข้อผิดพลาดนี้อาจเกิดขึ้นใน 2 กรณีต่อไปนี้
- กำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัยด้วยพอร์ตที่ไม่ปลอดภัย
- กำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัยแล้ว แต่กำหนดค่าเครื่องมือตรวจสอบสถานะด้วยพอร์ตที่ไม่ปลอดภัย
พอร์ตเป้าหมายที่ปลอดภัยและไม่ปลอดภัย
สถานการณ์ที่ 1: กำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัยด้วยพอร์ตที่ไม่ปลอดภัย
หากคุณกำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัยแต่ใช้พอร์ตที่ไม่ปลอดภัย เช่น 80 คุณจะได้รับข้อผิดพลาดนี้ โปรดทำตามขั้นตอนด้านล่างเพื่อตรวจสอบว่าสาเหตุของปัญหานี้เกิดจากส่วนขยายหรือไม่
- ตรวจสอบคำจำกัดความของเซิร์ฟเวอร์เป้าหมายที่ใช้ในการกำหนดค่าปลายทางเป้าหมาย
- ตอนนี้ ให้ตรวจสอบการกำหนดค่าเครื่องมือตรวจสอบสถานะสำหรับเซิร์ฟเวอร์เป้าหมายในการกำหนดค่าอุปกรณ์ปลายทางเป้าหมาย
การกำหนดค่าการตรวจสอบสถานะ
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Verb>GET</Verb> <Path>/statuscode/200</Path> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> </SuccessResponse> </HTTPMonitor> </HealthMonitor>โปรดทราบว่าไม่มีองค์ประกอบ
<Port>ที่ระบุในการกำหนดค่าเครื่องมือตรวจสอบสถานะด้านบน ในกรณีนี้ Message Processor ของ Edge จะใช้พอร์ตที่ระบุไว้ในคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย (ซึ่งคือ 80) เพื่อทำการเรียก API การตรวจสอบประสิทธิภาพการทำงาน - จากข้อมูลข้างต้น สาเหตุของข้อผิดพลาดนี้คือเซิร์ฟเวอร์เป้าหมาย ได้รับการกำหนดให้เป็นเซิร์ฟเวอร์ที่ปลอดภัย (เนื่องจากเปิดใช้บล็อก SSLInfo) แต่ใช้พอร์ต 80 ที่ไม่ปลอดภัย
ใช้ Get TargetServer API เพื่อรับคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
เอาต์พุตคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
<TargetServer name="mocktarget"> <Host>mocktarget.apigee.net</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>ในตัวอย่างด้านบน คำจำกัดความแสดงให้เห็นว่าเซิร์ฟเวอร์เป้าหมาย
mocktargetเป็นเซิร์ฟเวอร์ที่ปลอดภัย ตามที่ระบุไว้ในบล็อก SSLInfo แต่มีการกำหนดค่าด้วยพอร์ต 80 ที่ไม่ปลอดภัยพอร์ต HM ที่ไม่ปลอดภัยของเป้าหมายที่ปลอดภัย
สถานการณ์ที่ 2: กำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัย แต่กำหนดค่า Health Monitor ด้วยพอร์ตที่ไม่ปลอดภัย
หากคุณกำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัย แต่กำหนดค่าเครื่องมือตรวจสอบสถานะด้วยพอร์ตที่ไม่ปลอดภัย เช่น 80 คุณจะได้รับข้อผิดพลาดนี้ ทำตามขั้นตอนด้านล่างเพื่อตรวจสอบ ว่าสาเหตุของปัญหานี้เกิดจากอะไร
- ตรวจสอบคำจำกัดความของเซิร์ฟเวอร์เป้าหมายที่ใช้ในการกำหนดค่าปลายทางเป้าหมาย
ใช้ Get TargetServer API เพื่อรับคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
เอาต์พุตคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
<TargetServer name="mocktarget"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>ในตัวอย่างด้านบน คำจำกัดความแสดงให้เห็นว่าเซิร์ฟเวอร์เป้าหมาย
mocktargetเป็นเซิร์ฟเวอร์ที่ปลอดภัยตามที่ระบุไว้ในบล็อก SSLInfo - จากนั้นตรวจสอบการกำหนดค่าเครื่องมือตรวจสอบสถานะสำหรับเซิร์ฟเวอร์เป้าหมายในการกำหนดค่าอุปกรณ์ปลายทางเป้าหมาย
การกำหนดค่าการตรวจสอบสถานะ
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Port>80</Port> <Verb>GET</Verb> <Path>/statuscode/200</Path> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> </SuccessResponse> </HTTPMonitor>ในตัวอย่างข้างต้น Health Monitor ได้รับการกำหนดค่าด้วยพอร์ต 80 ที่ไม่ปลอดภัยตามที่ระบุโดยองค์ประกอบ
<Port> - จากข้อมูลข้างต้น สาเหตุของข้อผิดพลาดนี้คือมีการกำหนดเซิร์ฟเวอร์เป้าหมาย
เป็นเซิร์ฟเวอร์ที่ปลอดภัย (เนื่องจากเปิดใช้บล็อก SSLInfo) และใช้พอร์ตที่ปลอดภัย 443 แต่มีการกำหนดค่า Health Monitor
ให้ตรวจสอบประสิทธิภาพการทำงานด้วยพอร์ตที่ไม่ปลอดภัย 80 (ระบุไว้ในองค์ประกอบ
<Port>)กล่าวคือ ในกรณีนี้ Edge จะสร้าง API การตรวจสอบประสิทธิภาพการทำงานเป็นการเรียกที่ปลอดภัยด้วยพอร์ต 80 ที่ไม่ปลอดภัย และจะล้มเหลวพร้อมข้อผิดพลาดที่กล่าวถึงข้างต้น
ความละเอียด
พอร์ตเป้าหมายที่ปลอดภัยและไม่ปลอดภัย
สถานการณ์ที่ 1: กำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัยด้วยพอร์ตที่ไม่ปลอดภัย
หากต้องการแก้ไขข้อผิดพลาดนี้ ให้อัปเดตคำจำกัดความของเซิร์ฟเวอร์เป้าหมายเพื่อใช้พอร์ตที่ปลอดภัยที่เหมาะสม
ใช้ อัปเดต API ของ TargetServer เพื่ออัปเดตคำจำกัดความของเซิร์ฟเวอร์เป้าหมายและตรวจสอบว่า ใช้พอร์ตที่ปลอดภัย (เช่น 443) ตามที่แสดงในตัวอย่างด้านล่าง
<TargetServer name="mocktarget">
<Host>mocktarget.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
</TargetServer>
พอร์ต HM ที่ไม่ปลอดภัยของเป้าหมายที่ปลอดภัย
สถานการณ์ที่ 2: กำหนดเซิร์ฟเวอร์เป้าหมายที่ปลอดภัย แต่กำหนดค่า Health Monitor ด้วยพอร์ตที่ไม่ปลอดภัย
หากต้องการแก้ไขข้อผิดพลาดนี้ ให้ทำตามวิธีการด้านล่าง
- แก้ไขการกำหนดค่าเครื่องมือตรวจสอบสถานะเพื่อใช้พอร์ตที่ปลอดภัย (เช่น 443) เพื่อทำการตรวจสอบสถานะเซิร์ฟเวอร์เป้าหมายในการกำหนดค่าปลายทางเป้าหมายของ API Proxy ที่ล้มเหลวตามที่แสดงด้านล่าง
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Port>443</Port> <Verb>GET</Verb> <Path>/statuscode/200</Path> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> </SuccessResponse> </HTTPMonitor> </HealthMonitor> - บันทึกการเปลี่ยนแปลงในพร็อกซี API
สาเหตุ: คำขอที่ไม่ปลอดภัยในพอร์ตที่ปลอดภัย
การวินิจฉัย
- ระบุรหัสข้อความของคำขอที่ไม่สำเร็จ
- ค้นหารหัสข้อความในบันทึกของ Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log) - คุณจะเห็นข้อความแสดงข้อผิดพลาดที่พบบ่อยซึ่งสอดคล้องกับรหัสข้อความ
อย่างไรก็ตาม หากต้องการทราบสาเหตุที่แท้จริงของการตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จ ให้เลื่อนขึ้นไปเหนือ
ข้อความแสดงข้อผิดพลาดที่พบบ่อยเหล่านี้ แล้วตรวจสอบข้อผิดพลาดของ HEALTH MONITOR
เช่น คุณอาจเห็นข้อผิดพลาด HEALTH MONITOR ดังที่แสดงด้านล่าง
Apigee-Timer-2 ERROR SERVICES.HEALTH_MONITOR - HTTPMonitor.getResponseFromCache() : Error sending request Request URL : http://mocktarget.apigee.net:443/status java.net.SocketException: Unexpected end of file from server at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:851) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678) at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:848) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:678) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587) …<snipped>หากข้อผิดพลาดนี้เกิดขึ้นซ้ำตาม
MaxFailureจำนวนครั้งที่กำหนดค่าไว้ในเครื่องมือตรวจสอบสถานะ คุณจะเห็นข้อความประกาศเตือนดังนี้Apigee-Timer-7 WARN ADAPTORS.HTTP.FLOW - LBServer.incrementFailureCount() : Max failure count(10) reached for server : mocktarget{Environment=<orgname>__prod,Application=mocktargetapigee__1,Target=default}โปรดอ่านข้อมูลที่ระบุในข้อความคำเตือนอย่างละเอียด ตรวจสอบว่าถึงจำนวน
MaxFailureสำหรับเซิร์ฟเวอร์เป้าหมายที่ใช้ในพร็อกซี API ที่เฉพาะเจาะจงซึ่งคุณได้รับ โค้ดตอบกลับ 503 ที่มีรหัสข้อผิดพลาด NoActiveTargets - การตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จเนื่องจากข้อผิดพลาดต่อไปนี้
Error sending request Request URL : http://mocktarget.apigee.net:443/status java.net.SocketException: Unexpected end of file from serverข้อความแสดงข้อผิดพลาดและ URL บ่งชี้ว่าสาเหตุของปัญหานี้คือมีการเรียกที่ไม่ปลอดภัย (HTTP) ในพอร์ต 443 ที่ปลอดภัย
ข้อผิดพลาดนี้อาจเกิดขึ้นใน 2 กรณีต่อไปนี้
- เซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัยซึ่งกำหนดด้วยพอร์ตที่ปลอดภัย
- กำหนดเซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัย แต่กำหนดค่าเครื่องมือตรวจสอบสถานะด้วยพอร์ตที่ปลอดภัย
พอร์ตที่ปลอดภัยเป้าหมายที่ไม่ปลอดภัย
สถานการณ์ที่ 1: กำหนดเซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัยด้วยพอร์ตที่ปลอดภัย
หากคุณกำหนดเซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัยแต่มีพอร์ตที่ปลอดภัย เช่น 443 คุณจะได้รับข้อผิดพลาดนี้ โปรดทำตามขั้นตอนด้านล่างเพื่อตรวจสอบว่าสาเหตุของปัญหานี้เกิดจากส่วนขยายหรือไม่
- ตรวจสอบคำจำกัดความของเซิร์ฟเวอร์เป้าหมายที่ใช้ในการกำหนดค่าปลายทางเป้าหมาย
ใช้ Get TargetServer API เพื่อรับคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
เอาต์พุตคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
<TargetServer name="mocktarget"> <Host>mocktarget.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> </TargetServer>ในตัวอย่างด้านบน คำจำกัดความแสดงให้เห็นว่าเซิร์ฟเวอร์เป้าหมาย
mocktargetเป็นเซิร์ฟเวอร์ที่ไม่ปลอดภัยเนื่องจากไม่มีบล็อก SSLInfo แต่กำหนดค่าไม่ถูกต้องด้วยพอร์ต 443 ที่ปลอดภัย - ตอนนี้ ให้ตรวจสอบการกำหนดค่าเครื่องมือตรวจสอบสถานะสำหรับเซิร์ฟเวอร์เป้าหมายในการกำหนดค่าอุปกรณ์ปลายทางเป้าหมาย
การกำหนดค่าการตรวจสอบสถานะ
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Verb>GET</Verb> <Path>/statuscode/200</Path> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> </SuccessResponse> </HTTPMonitor> </HealthMonitor>โปรดทราบว่าไม่มีองค์ประกอบ
<Port>ที่ระบุในการกำหนดค่า Health Monitor ด้านบน ในกรณีนี้ Message Processor ของ Edge จะใช้พอร์ตที่ระบุไว้ใน คำจำกัดความของเซิร์ฟเวอร์เป้าหมาย ซึ่งก็คือ 443 - จากข้อมูลข้างต้น สาเหตุของข้อผิดพลาดนี้คือมีการกำหนดเซิร์ฟเวอร์เป้าหมาย
เป็นเซิร์ฟเวอร์ที่ไม่ปลอดภัย (เนื่องจากไม่ได้กำหนดบล็อก SSLInfo) แต่ใช้พอร์ต 443 ที่ปลอดภัย
กล่าวคือ Edge จะทำการตรวจสอบประสิทธิภาพการทำงานเป็นการเรียกที่ไม่ปลอดภัยด้วยพอร์ตที่ปลอดภัย 443 และล้มเหลว โดยมีข้อผิดพลาดที่กล่าวถึงข้างต้น
พอร์ต HM ที่ปลอดภัยของเป้าหมายที่ไม่ปลอดภัย
สถานการณ์ที่ 2: กำหนดเซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัย แต่กำหนดค่าเครื่องมือตรวจสอบสถานะด้วยพอร์ตที่ปลอดภัย
หากคุณกำหนดเซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัย แต่กำหนดค่าเครื่องมือตรวจสอบสถานะด้วยพอร์ตที่ปลอดภัย เช่น 443 คุณจะได้รับข้อผิดพลาดนี้ โปรดทำตามขั้นตอนด้านล่างเพื่อตรวจสอบว่าสาเหตุของปัญหานี้เกิดจากส่วนขยายหรือไม่
- ตรวจสอบคำจำกัดความของเซิร์ฟเวอร์เป้าหมายที่ใช้ในการกำหนดค่าปลายทางเป้าหมาย
ใช้ Get TargetServer API เพื่อรับคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
เอาต์พุตคำจำกัดความของเซิร์ฟเวอร์เป้าหมาย
<TargetServer name="mocktarget"> <Host>mocktarget.apigee.net</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>ในตัวอย่างด้านบน คำจำกัดความแสดงให้เห็นว่าเซิร์ฟเวอร์เป้าหมาย
mocktargetเป็นเซิร์ฟเวอร์ที่ไม่ปลอดภัย (เนื่องจากไม่มีบล็อก SSLInfo) ที่กำหนดค่าด้วยพอร์ตที่ไม่ปลอดภัย 80 อย่างถูกต้อง - จากนั้นตรวจสอบการกำหนดค่าเครื่องมือตรวจสอบสถานะสำหรับเซิร์ฟเวอร์เป้าหมายในการกำหนดค่าอุปกรณ์ปลายทางเป้าหมาย
การกำหนดค่าการตรวจสอบสถานะ
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Port>443</Port> <Verb>GET</Verb> <Path>/statuscode/200</Path> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> </SuccessResponse> </HTTPMonitor> </HealthMonitor>ในตัวอย่างด้านบน Health Monitor ได้รับการกำหนดค่าด้วยพอร์ต 443 ที่ปลอดภัยตามที่ระบุโดยองค์ประกอบ
<Port> - จากข้อมูลข้างต้น สาเหตุของข้อผิดพลาดนี้คือเซิร์ฟเวอร์เป้าหมายถูกกำหนดให้เป็น
เซิร์ฟเวอร์ที่ไม่ปลอดภัย (เนื่องจากไม่ได้กำหนดบล็อก SSLInfo) ที่มีพอร์ตที่ไม่ปลอดภัย 80 อย่างถูกต้อง
แต่มีการกำหนดค่า Health Monitor ให้ทำการตรวจสอบประสิทธิภาพการทำงานด้วยพอร์ตที่ปลอดภัย 443 (ระบุไว้ในองค์ประกอบ
<Port>)กล่าวคือ ในกรณีนี้ Edge จะทำการตรวจสอบประสิทธิภาพการทำงานเป็นการเรียกที่ไม่ปลอดภัยด้วยพอร์ตที่ปลอดภัย 443 และจะล้มเหลวโดยมีข้อผิดพลาดที่กล่าวถึงข้างต้น
ความละเอียด
พอร์ตที่ปลอดภัยเป้าหมายที่ไม่ปลอดภัย
สถานการณ์ที่ 1: กำหนดเซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัยด้วยพอร์ตที่ปลอดภัย
หากต้องการแก้ไขข้อผิดพลาดนี้ ให้อัปเดตคำจำกัดความของเซิร์ฟเวอร์เป้าหมายเพื่อใช้พอร์ตที่ปลอดภัยที่เหมาะสม
ใช้ อัปเดต API ของเซิร์ฟเวอร์เป้าหมายเพื่ออัปเดตคำจำกัดความของเซิร์ฟเวอร์เป้าหมายและตรวจสอบว่ามีการใช้พอร์ตที่ไม่ปลอดภัย (เช่น 80) ตามที่แสดงในตัวอย่างด้านล่าง
<TargetServer name="mocktarget">
<Host>mocktarget.apigee.net</Host>
<Port>80</Port>
<IsEnabled>true</IsEnabled>
</TargetServer>
พอร์ต HM ที่ปลอดภัยของเป้าหมายที่ไม่ปลอดภัย
สถานการณ์ที่ 2: กำหนดเซิร์ฟเวอร์เป้าหมายที่ไม่ปลอดภัย แต่กำหนดค่าเครื่องมือตรวจสอบสถานะด้วยพอร์ตที่ปลอดภัย
หากต้องการแก้ไขข้อผิดพลาดนี้ ให้ทำตามวิธีการด้านล่าง
- ให้นำองค์ประกอบ
<Port>ออกจากการกำหนดค่าเครื่องมือตรวจสอบสถานะ หรือแก้ไขการกำหนดค่าเครื่องมือตรวจสอบสถานะให้ใช้พอร์ตที่ไม่ปลอดภัย (เช่น 80) เพื่อทำการตรวจสอบสถานะเซิร์ฟเวอร์เป้าหมายในการกำหนดค่าปลายทางเป้าหมายของ API Proxy ที่ล้มเหลวตามที่แสดงด้านล่าง<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Port>80</Port> <Verb>GET</Verb> <Path>/statuscode/200</Path> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> </SuccessResponse> </HTTPMonitor> </HealthMonitor> - บันทึกการเปลี่ยนแปลงในพร็อกซี API
สาเหตุ: API การตรวจสอบประสิทธิภาพการทำงานตอบกลับด้วยข้อผิดพลาด
การวินิจฉัย
- ระบุรหัสข้อความของคำขอที่ไม่สำเร็จ
- ค้นหารหัสข้อความในบันทึกของ Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log) - คุณจะเห็นข้อความแสดงข้อผิดพลาดที่พบบ่อยที่สอดคล้องกับรหัสข้อความ
อย่างไรก็ตาม หากต้องการทราบสาเหตุที่แท้จริงของการตรวจสอบประสิทธิภาพการทำงานไม่สำเร็จ ให้เลื่อนขึ้นไปเหนือข้อความแสดงข้อผิดพลาดที่พบบ่อยเหล่านี้ แล้วตรวจสอบข้อผิดพลาด/คำเตือนของ HEALTH MONITOR
เช่น คุณอาจเห็นคำเตือนเกี่ยวกับ HEALTH MONITOR ดังที่แสดงด้านล่าง
Apigee-Timer-7 INFO SERVICES.HEALTH_MONITOR - HTTPMonitor.sendRequest() : HTTPMonitor.monitor() : Connecting to https://mocktarget.apigee.net:443/status/200 Apigee-Timer-7 WARN SERVICES.HEALTH_MONITOR - HTTPMonitor.monitor() : HTTP response code from health monitoring service does not match.Expected response code : [200]. Received response code : 404หากข้อผิดพลาดนี้เกิดขึ้นซ้ำตาม
MaxFailureจำนวนครั้งที่กำหนดค่าไว้ในเครื่องมือตรวจสอบสถานะ คุณจะเห็นข้อความประกาศเตือนดังนี้Apigee-Timer-7 WARN ADAPTORS.HTTP.FLOW - LBServer.incrementFailureCount() : Max failure count(10) reached for server : mocktarget{Environment=<orgname>__prod,Application=mocktargetapigee__1,Target=default}โปรดอ่านข้อมูลที่ระบุในข้อความคำเตือนอย่างละเอียด ตรวจสอบว่าถึงจำนวน
MaxFailureสำหรับเซิร์ฟเวอร์เป้าหมายที่ใช้ในพร็อกซี API ที่เฉพาะเจาะจงซึ่งคุณได้รับ โค้ดตอบกลับ 503 ที่มีรหัสข้อผิดพลาด NoActiveTargets - การตรวจสอบประสิทธิภาพการทำงานแสดงข้อความเตือนต่อไปนี้
HTTP response code from health monitoring service does not match.Expected response code : [200]. Received response code : 404ข้อความเตือนด้านบนระบุว่ารหัสการตอบกลับที่คาดไว้สำหรับ API การตรวจสอบสถานะคือ 200 แต่การตอบกลับจริงที่ได้รับคือ 404 ดังนั้น ระบบจึงถือว่าการดำเนินการนี้ล้มเหลว
- ก่อนที่จะตรวจสอบสาเหตุของการตอบกลับข้อผิดพลาดจาก Health Check API ให้พิจารณาว่าเหตุใด Edge จึงคาดหวังโค้ดตอบกลับเป็น 200 สำหรับ Health Check API โดยให้ตรวจสอบการกำหนดค่า Health Monitor
สำหรับเซิร์ฟเวอร์เป้าหมายในการกำหนดค่าอุปกรณ์ปลายทางเป้าหมาย ดังนี้
การกำหนดค่าการตรวจสอบสถานะ
<HealthMonitor> <IsEnabled>true</IsEnabled> <IntervalInSec>5</IntervalInSec> <HTTPMonitor> <Request> <ConnectTimeoutInSec>10</ConnectTimeoutInSec> <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec> <Port>443</Port> <Verb>GET</Verb> <Path>/status/200</Path> </Request> <SuccessResponse> <ResponseCode>200</ResponseCode> </SuccessResponse> </HTTPMonitor> </HealthMonitor>โปรดสังเกตว่าการกำหนดค่าเครื่องมือตรวจสอบสถานะได้รับการกำหนดค่าด้วยโค้ดตอบกลับ 200 ภายใต้องค์ประกอบ
<SuccessResponse>ซึ่งหมายความว่าหาก Edge ได้รับโค้ดตอบกลับ (เช่น 400, 401, 404, 500) อื่นที่ไม่ใช่ 200 จาก Health Check API ระบบจะถือว่าเป็นการเกิดข้อผิดพลาดและเพิ่มจำนวนการทำงานที่ล้มเหลว - ตอนนี้หากต้องการตรวจสอบสาเหตุของการตอบกลับข้อผิดพลาดจาก Health Check API ให้ทำตามขั้นตอนด้านล่าง
- ดูข้อความก่อนหน้าข้อความคำเตือนในบันทึกของ Message Processor
Apigee-Timer-7 INFO SERVICES.HEALTH_MONITOR - HTTPMonitor.sendRequest() : HTTPMonitor.monitor() : Connecting to https://mocktarget.apigee.net:443/status/200จด URL การตรวจสอบประสิทธิภาพการทำงานจากข้อความนี้
- คุณโทรไปยัง URL นี้ได้โดยตรงจาก Message Processor และตรวจสอบการตอบกลับจริง
curl -i https://mocktarget.apigee.net:443/status/200การตอบกลับจากการเรียกข้างต้นจะแสดง 404 ดังที่เห็นในบันทึกของ Message Processor
< HTTP/2 404 - ซึ่งแสดงให้เห็นว่าแม้การเรียก URL การตรวจสอบสถานะโดยตรงก็ล้มเหลวด้วยโค้ดตอบกลับ 404 เดียวกัน ซึ่งหมายความว่า URL การตรวจสอบประสิทธิภาพการทำงานอาจไม่ถูกต้อง หรือทรัพยากรที่เข้าถึงเป็นส่วนหนึ่งของ URL อาจไม่พร้อมใช้งานอีกต่อไป
- ในตัวอย่าง API การตรวจสอบประสิทธิภาพการทำงานที่ระบุไว้ข้างต้น ปัญหาเกิดขึ้นเนื่องจากมีการใช้ URL ที่ไม่ถูกต้องในการกำหนดค่าเครื่องมือตรวจสอบสถานะ
เราพบว่า URL ที่ถูกต้องคือ
https://mocktarget.apigee.net:443/statuscode/200จาก API เป้าหมายจำลอง - หากคุณได้รับการตอบกลับเป็นข้อผิดพลาดอื่นๆ ให้ระบุสาเหตุของข้อผิดพลาดดังกล่าวโดยทำตาม ขั้นตอนด้านบน หากจำเป็น ให้ทำงานร่วมกับทีมแบ็กเอนด์
ความละเอียด
- แก้ไขปัญหาเกี่ยวกับ API การตรวจสอบประสิทธิภาพการทำงานในเซิร์ฟเวอร์แบ็กเอนด์
- วิธีแก้ไขปัญหาในตัวอย่างที่กล่าวถึงข้างต้น
- แก้ไของค์ประกอบ
<Path>ในการกำหนดค่า Health Monitor เป็น/statuscode/200ดังที่แสดงด้านล่าง<Path>/statuscode/200</Path> - บันทึกการเปลี่ยนแปลงในพร็อกซี API
หากยังพบปัญหาอยู่ โปรดไปที่ ต้องรวบรวมข้อมูลการวินิจฉัย
วินิจฉัยปัญหาโดยใช้การตรวจสอบ API
การตรวจสอบ API ช่วยให้คุณแยกพื้นที่ที่มีปัญหาได้อย่างรวดเร็วเพื่อวินิจฉัยปัญหาด้านข้อผิดพลาด ประสิทธิภาพ และเวลาในการตอบสนอง รวมถึงแหล่งที่มาของปัญหา เช่น แอปของนักพัฒนาซอฟต์แวร์ พร็อกซี API เป้าหมายแบ็กเอนด์ หรือแพลตฟอร์ม API
ดูสถานการณ์ตัวอย่าง
ที่แสดงวิธีแก้ปัญหา 5xx เกี่ยวกับ API โดยใช้การตรวจสอบ API เช่น
คุณอาจต้องการตั้งค่าการแจ้งเตือนเพื่อให้ได้รับการแจ้งเตือนเมื่อจำนวนmessaging.adaptors.http.flow.NoActiveTargets
ข้อบกพร่องเกินเกณฑ์ที่กำหนด
ต้องรวบรวมข้อมูลการวินิจฉัย
หากยังพบปัญหาเดิมอยู่แม้จะทำตามวิธีการข้างต้นแล้ว โปรดรวบรวมข้อมูลการวินิจฉัยต่อไปนี้ โปรดติดต่อและแชร์ข้อมูลต่อไปนี้กับทีมสนับสนุนของ Apigee
- หากคุณเป็นผู้ใช้ระบบคลาวด์สาธารณะ โปรดระบุข้อมูลต่อไปนี้
- ชื่อองค์กร
- ชื่อสภาพแวดล้อม
- ชื่อพร็อกซี API
- คำสั่ง curl ที่สมบูรณ์เพื่อสร้างข้อผิดพลาดซ้ำ
- ไฟล์การติดตามที่มีคำขอที่มีข้อผิดพลาด 503 ไม่พร้อมให้บริการพร้อมรหัสข้อผิดพลาด NoActiveTargets
- หากคุณเป็นผู้ใช้ Private Cloud โปรดระบุข้อมูลต่อไปนี้
- ข้อความแสดงข้อผิดพลาดทั้งหมดที่พบ
- ชื่อสภาพแวดล้อม
- แพ็กเกจพร็อกซี API
- ไฟล์การติดตามที่มีคำขอที่มีข้อผิดพลาด 503 ไม่พร้อมให้บริการพร้อมรหัสข้อผิดพลาด NoActiveTargets
- บันทึกการเข้าถึง NGINX
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log) - บันทึกของ Message Processor
(
/opt/apigee/var/log/edge-message-processor/logs/system.log)