คุณกำลังดูเอกสารประกอบของ 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
สาเหตุที่เป็นไปได้
สาเหตุทั่วไปของปัญหานี้ได้แก่
สาเหตุ | รายละเอียด | สำหรับ |
ปัญหาการเชื่อมต่อเครือข่าย | การสื่อสารระหว่างเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อความล้มเหลวเนื่องจากปัญหาการเชื่อมต่อเครือข่ายหรือกฎไฟร์วอลล์ | ผู้ใช้ 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
" - เข้าสู่ระบบตัวประมวลผลข้อความแต่ละตัวด้วย UUID ที่สอดคล้องกันที่แสดงข้อผิดพลาด และทำตามขั้นตอนต่อไปนี้โดยอิงตามเอาต์พุตสถานะการทำให้ใช้งานได้สำหรับพร็อกซี API
- ตรวจสอบว่าตัวประมวลผลข้อความกำลังฟังอยู่ในพอร์ต 4528 หรือไม่
netstat -an | grep LISTEN | grep 4528
ถ้าตัวประมวลผลข้อความไม่ฟังอยู่บนพอร์ต 4528 ให้รีสตาร์ท ตัวประมวลผลข้อความ ดังนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- ตรวจสอบสถานะการติดตั้งใช้งานของพร็อกซี API อีกครั้งโดยใช้การเรียก Management API ที่แสดงในขั้นตอนที่ 1 ด้านบน หากไม่มีข้อผิดพลาด แสดงว่าปัญหาได้รับการแก้ไขแล้ว
- ตรวจสอบว่าตัวประมวลผลข้อความกำลังฟังอยู่ในพอร์ต 4528 หรือไม่
- หากยังพบปัญหาอยู่ ให้ทดสอบการเชื่อมต่อจากเซิร์ฟเวอร์การจัดการไปยัง Message Processor บนพอร์ต 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 บนเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อมูลข้อความ
- นำข้อจำกัดของไฟร์วอลล์หรือการตั้งค่ากฎการรักษาความปลอดภัยระหว่างเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อมูลข้อความออก เพื่ออนุญาตการเชื่อมต่อกับพอร์ต 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 หรือใช้ Management 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 เพื่อรับความช่วยเหลือในการวิเคราะห์ tcpdump และแก้ปัญหาเพิ่มเติม
- เรียกใช้คำสั่ง tcpdump ด้านล่างจากเซิร์ฟเวอร์การจัดการ:
แพ็กเกจพร็อกซี API ขนาดใหญ่
การวินิจฉัย
- ตรวจสอบขนาดของแพ็กเกจพร็อกซี API ที่พบข้อผิดพลาดในการทำให้ใช้งานได้
- ถ้าไฟล์มีขนาดใหญ่พอสมควร (10 MB ขึ้นไป) ก็เป็นไปได้มากว่าโปรแกรมประมวลผลข้อความอาจต้องใช้เวลาเพิ่มเติมในการเปิดใช้งานพร็อกซี API
- หากกลุ่มพร็อกซี API ใหญ่กว่า 15 MB ให้ไปที่ แพ็กเกจพร็อกซี API ที่มีขนาดใหญ่กว่า 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 เพื่อขอความช่วยเหลือเพิ่มเติม