คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ลักษณะปัญหา
การทำให้การแก้ไขพร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ API การจัดการล้มเหลวเนื่องจากหมดเวลา
ข้อความแสดงข้อผิดพลาด
Click to change deployment status. The revision is deployed and traffic can flow, but flow may be impaired. Error: Call timed out; either server is down or server is not reachable
สาเหตุที่เป็นไปได้
สาเหตุทั่วไปของปัญหานี้มีดังนี้
สาเหตุ | รายละเอียด | สำหรับ |
ปัญหาการเชื่อมต่อเครือข่าย | การสื่อสารล้มเหลวระหว่างเซิร์ฟเวอร์การจัดการและ Message Processor เนื่องจากเครือข่าย ปัญหาการเชื่อมต่อหรือกฎไฟร์วอลล์ | เฉพาะผู้ใช้ Private Cloud เท่านั้น |
แพ็กเกจพร็อกซี API ขนาดใหญ่ | ตัวประมวลผลข้อความอาจใช้เวลานานในการเปิดใช้งาน หากแพ็กเกจพร็อกซี API มีขนาดใหญ่ ซึ่งทำให้ RPC หมดเวลา | ผู้ใช้ระบบคลาวด์ส่วนตัวและระบบคลาวด์สาธารณะ |
ปัญหาการเชื่อมต่อเครือข่าย
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
การวินิจฉัย
- รับสถานะการทำให้ใช้งานได้สำหรับ API ที่ระบุที่แสดงข้อผิดพลาดโดยใช้ข้อมูลต่อไปนี้
การเรียก API การจัดการ:
curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
เอาต์พุตตัวอย่างที่แสดงข้อผิดพลาด
{ "error": "Call timed out; either server is down or server is not reachable", "status": "error", "type": [ "message-processor" ], "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" }, { "status": "deployed", "type": [ "message-processor" ], "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" }, { "status": "deployed", "type": [ "router" ], "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" }, { "status": "deployed", "type": [ "router" ], "state" : "error" }
เอาต์พุตตัวอย่างด้านบนแสดงให้เห็นว่าเกิดข้อผิดพลาดกับตัวประมวลผลข้อความตัวใดตัวหนึ่ง มี UUID "
ebbc1078-cbde-4a00-a7db-66a3c1b2b748
" - ตามเอาต์พุตสถานะการทำให้ใช้งานได้สำหรับพร็อกซี API ของคุณ ให้ลงชื่อเข้าใช้แต่ละ Message
โปรเซสเซอร์ที่มี UUID ที่เกี่ยวข้องซึ่งแสดงข้อผิดพลาดและทำตามขั้นตอนต่อไปนี้
- ตรวจสอบว่าตัวประมวลผลข้อความกำลังฟังข้อมูลบนพอร์ต 4528 หรือไม่ ดังนี้
netstat -an | grep LISTEN | grep 4528
หากตัวประมวลผลข้อความไม่ได้ฟังข้อมูลจากพอร์ต 4528 ให้รีสตาร์ทข้อความ โปรเซสเซอร์:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- ตรวจสอบสถานะการทำให้พร็อกซี API ใช้งานได้อีกครั้งโดยใช้การเรียก API การจัดการที่แสดง ในขั้นตอนที่ 1 ด้านบน หากไม่มีข้อผิดพลาด แสดงว่าปัญหาได้รับการแก้ไขแล้ว
- ตรวจสอบว่าตัวประมวลผลข้อความกำลังฟังข้อมูลบนพอร์ต 4528 หรือไม่ ดังนี้
- หากปัญหายังคงอยู่ ให้ทดสอบการเชื่อมต่อจากเซิร์ฟเวอร์การจัดการกับข้อความ
โปรเซสเซอร์ในพอร์ต 4528 โดยทำตามขั้นตอนต่อไปนี้
- หากมีให้ใช้ telnet ให้ใช้ telnet
telnet <MessageProcessor_IP> 4528
- หาก telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อ ดังนี้
nc -vz <MessageProcessor_IP> 4528
- หากได้รับการตอบกลับ "การเชื่อมต่อถูกปฏิเสธ" หรือ "หมดเวลาการเชื่อมต่อ" จากนั้นให้มีส่วนร่วม ทีมปฏิบัติการเครือข่ายของคุณ
- หากมีให้ใช้ telnet ให้ใช้ telnet
- ทดสอบการเชื่อมต่อจาก Message Processor ไปยังเซิร์ฟเวอร์การจัดการบนพอร์ต 4526
โดยทำตามขั้นตอนต่อไปนี้
- หากมีให้ใช้ telnet ให้ใช้ telnet
telnet <management-server-IP> 4526
- หาก telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อ ดังนี้
nc -vz <management-server-IP> 4526
- หากได้รับการตอบกลับ "การเชื่อมต่อถูกปฏิเสธ" หรือ "หมดเวลาการเชื่อมต่อ" ทีมปฏิบัติการเครือข่าย
- หากมีให้ใช้ telnet ให้ใช้ telnet
- ทำงานร่วมกับทีมปฏิบัติการด้านเครือข่ายและดำเนินการดังนี้
- ตรวจสอบว่าอนุญาตให้ใช้โปรโตคอล RPC ทั้งในเซิร์ฟเวอร์การจัดการและข้อความ ผู้ประมวลผลข้อมูล
- นำข้อจำกัดของไฟร์วอลล์หรือการตั้งค่ากฎความปลอดภัยระหว่างเซิร์ฟเวอร์การจัดการออก และ Message Processor เพื่อให้สามารถเชื่อมต่อกับพอร์ต 4526 บนเซิร์ฟเวอร์การจัดการได้ และ การเชื่อมต่อจากเซิร์ฟเวอร์การจัดการไปยังตัวประมวลผลข้อความบนพอร์ต 4528
- ตรวจสอบสถานะการทำให้ใช้งานได้อีกครั้ง (ดูขั้นตอนที่ 1 ด้านบน) หากคุณไม่เห็นข้อผิดพลาดใดๆ แสดงว่าข้อผิดพลาดได้รับการแก้ไขแล้ว
- หากยังพบปัญหาอยู่ ให้ตรวจสอบว่าเครือข่ายที่ประมวลผลข้อความมีปัญหาหรือไม่ หากมี
เครือข่ายมีปัญหา ให้รีสตาร์ทโปรเซสเซอร์ข้อความเฉพาะที่แสดงข้อผิดพลาดการหมดเวลา (ตาม
เอาต์พุตของสถานะการติดตั้งใช้งาน) อาจช่วยแก้ปัญหาได้ โดยทำดังนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- หากยังคงพบปัญหาอยู่ ให้ตรวจสอบบันทึกเซิร์ฟเวอร์การจัดการได้ที่
(
/opt/apigee/var/log/edge-management-server/logs/system.log
)ข้อผิดพลาดเกี่ยวกับตัวอย่างการหมดเวลาจากบันทึกของเซิร์ฟเวอร์การจัดการ
2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true com.apigee.rpc.RPCException: Call timed out at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79]
หากคุณสังเกตเห็นข้อผิดพลาดที่คล้ายกันดังที่แสดงในตัวอย่างด้านบน ให้เพิ่ม RPC ในเซิร์ฟเวอร์การจัดการ ดังนั้นถ้ามีความล่าช้าของเครือข่าย ก็น่าจะให้ เวลาที่เซิร์ฟเวอร์การจัดการจะเชื่อมต่อกับตัวประมวลผลข้อความ
ความละเอียด
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
- โปรดทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มระยะหมดเวลา RPC
- สร้างไฟล์
/opt/apigee/customer/application/management-server.properties
ฝ่ายบริหาร เครื่องเซิร์ฟเวอร์หากยังไม่มี - เพิ่มบรรทัดต่อไปนี้ลงในไฟล์นี้:
conf_cluster_rpc.connect.timeout=<time in seconds>
ค่าระยะหมดเวลา RPC เริ่มต้นคือ 10 และแนะนำให้เพิ่มเป็น 40 วินาที ตั้งค่าดังนี้
conf_cluster_rpc.connect.timeout=40
- ตรวจสอบว่า Apigee เป็นเจ้าของไฟล์นี้:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- รีสตาร์ทเซิร์ฟเวอร์การจัดการ:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- หากคุณมีเซิร์ฟเวอร์การจัดการมากกว่า 1 เซิร์ฟเวอร์ ให้ทำขั้นตอนข้างต้นซ้ำในทุก เซิร์ฟเวอร์การจัดการ
- ทำให้พร็อกซี API ใช้งานได้ใน Edge UI หรือใช้การเรียก Edge Management API หาก ระบบจะทำให้พร็อกซี API ใช้งานได้โดยไม่มีปัญหาใดๆ ซึ่งแสดงว่าปัญหาได้รับการแก้ไขแล้ว
- สร้างไฟล์
- หากปัญหายังคงอยู่ ให้รวบรวม
tcpdump จากเซิร์ฟเวอร์การจัดการและโปรแกรมประมวลผลข้อความ เปิดใช้ tcpdump
ในแต่ละเซิร์ฟเวอร์ จากนั้นเริ่มต้นการทำให้พร็อกซี API ใช้งานได้จาก UI
หรือใช้ API การจัดการ
- เรียกใช้คำสั่ง tcpdump ด้านล่างจากเซิร์ฟเวอร์การจัดการ
tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
- เรียกใช้คำสั่ง tcpdump ด้านล่างจากตัวประมวลผลข้อความ
tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
- ติดต่อทีมสนับสนุนของ Apigee Edge เพื่อรับความช่วยเหลือเกี่ยวกับ วิเคราะห์ tcpdumps และแก้ปัญหาต่อไป
- เรียกใช้คำสั่ง tcpdump ด้านล่างจากเซิร์ฟเวอร์การจัดการ
ใหญ่ แพ็กเกจพร็อกซี API
การวินิจฉัย
- ตรวจสอบขนาดแพ็กเกจพร็อกซี API ที่เกิดข้อผิดพลาดในการติดตั้งใช้งาน สังเกตการณ์แล้ว
- ถ้าขนาดค่อนข้างใหญ่ (10MB หรือสูงกว่า) ก็เป็นไปได้มากว่า ผู้ประมวลผลข้อมูลอาจต้องการเวลาเพิ่มเติมในการเปิดใช้งานพร็อกซี API
- หากแพ็กเกจพร็อกซี API มีขนาดเกิน 15 MB ให้ไปที่ API Proxy Bundle มีขนาดใหญ่กว่า 15 MB
ความละเอียด
หมายเหตุ: มีเพียงผู้ใช้ Edge Private Cloud เท่านั้นที่จะทำตามขั้นตอนต่อไปนี้ได้ หากคุณ อยู่ใน Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge
เพิ่มระยะหมดเวลาของ RPC บนเซิร์ฟเวอร์การจัดการเพื่อให้ตัวประมวลผลข้อความมีเวลาเพียงพอในการ เปิดใช้งานแพ็กเกจพร็อกซี API ขนาดใหญ่ ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มระยะหมดเวลา RPC ค่า:
- สร้างไฟล์
/opt/apigee/customer/application/management-server.properties
ในเครื่องเซิร์ฟเวอร์การจัดการ ถ้าไม่มีอยู่แล้ว - เพิ่มบรรทัดต่อไปนี้ลงในไฟล์นี้:
conf_cluster_rpc.connect.timeout=<time in seconds>
ค่าระยะหมดเวลา RPC เริ่มต้นคือ 10 และแนะนำให้เพิ่มเป็น 40 วินาที ตั้งค่าดังนี้
conf_cluster_rpc.connect.timeout=40
- ตรวจสอบว่า Apigee เป็นเจ้าของไฟล์นี้:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- รีสตาร์ทเซิร์ฟเวอร์การจัดการ:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- หากคุณมีเซิร์ฟเวอร์การจัดการมากกว่า 1 เซิร์ฟเวอร์ ให้ทำขั้นตอนข้างต้นซ้ำกับการจัดการทั้งหมด เซิร์ฟเวอร์
หากยังคงพบปัญหาอยู่ ให้ติดต่อฝ่ายสนับสนุนของ Apigee Edge สำหรับ ความช่วยเหลือเพิ่มเติม