ข้อผิดพลาดการหมดเวลา

คุณกำลังดูเอกสารประกอบของ 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

การวินิจฉัย

  1. ดูสถานะการทำให้ใช้งานได้สำหรับ 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"

  2. เข้าสู่ระบบตัวประมวลผลข้อความแต่ละตัวด้วย UUID ที่สอดคล้องกันที่แสดงข้อผิดพลาด และทำตามขั้นตอนต่อไปนี้โดยอิงตามเอาต์พุตสถานะการทำให้ใช้งานได้สำหรับพร็อกซี API
    1. ตรวจสอบว่าตัวประมวลผลข้อความกำลังฟังอยู่ในพอร์ต 4528 หรือไม่
      netstat -an | grep LISTEN | grep 4528
      

      ถ้าตัวประมวลผลข้อความไม่ฟังอยู่บนพอร์ต 4528 ให้รีสตาร์ท ตัวประมวลผลข้อความ ดังนี้

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. ตรวจสอบสถานะการติดตั้งใช้งานของพร็อกซี API อีกครั้งโดยใช้การเรียก Management API ที่แสดงในขั้นตอนที่ 1 ด้านบน หากไม่มีข้อผิดพลาด แสดงว่าปัญหาได้รับการแก้ไขแล้ว
  3. หากยังพบปัญหาอยู่ ให้ทดสอบการเชื่อมต่อจากเซิร์ฟเวอร์การจัดการไปยัง Message Processor บนพอร์ต 4528 โดยทำตามขั้นตอนต่อไปนี้
    1. หากมี telnet ให้ใช้ telnet
      telnet <MessageProcessor_IP> 4528
      
    2. หาก Telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อดังนี้
      nc -vz <MessageProcessor_IP> 4528
      
    3. หากคุณได้รับการตอบกลับว่า "การเชื่อมต่อถูกปฏิเสธ" หรือ "การเชื่อมต่อหมดเวลา" ให้ติดต่อทีมปฏิบัติการของเครือข่าย
  4. ทดสอบการเชื่อมต่อจาก Message Processor ไปยังเซิร์ฟเวอร์การจัดการบนพอร์ต 4526 โดยใช้ขั้นตอนต่อไปนี้
    1. หากมี telnet ให้ใช้ telnet
      telnet <management-server-IP> 4526
      
    2. หาก Telnet ไม่พร้อมใช้งาน ให้ใช้ netcat เพื่อตรวจสอบการเชื่อมต่อดังนี้
      nc -vz <management-server-IP> 4526 
      
    3. หากคุณได้รับการตอบกลับว่า "การเชื่อมต่อถูกปฏิเสธ" หรือ "หมดเวลาการเชื่อมต่อ" ให้ติดต่อทีมปฏิบัติการเครือข่าย
  5. ทำงานร่วมกับทีมปฏิบัติการของเครือข่ายและดำเนินการต่อไปนี้
    1. ตรวจสอบว่าได้อนุญาตโปรโตคอล RPC บนเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อมูลข้อความ
    2. นำข้อจำกัดของไฟร์วอลล์หรือการตั้งค่ากฎการรักษาความปลอดภัยระหว่างเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อมูลข้อความออก เพื่ออนุญาตการเชื่อมต่อกับพอร์ต 4526 ในเซิร์ฟเวอร์การจัดการ และการเชื่อมต่อจากเซิร์ฟเวอร์การจัดการไปยังตัวประมวลผลข้อความในพอร์ต 4528
  6. ตรวจสอบสถานะการติดตั้งใช้งานอีกครั้ง (ดูขั้นตอนที่ 1 ด้านบน) หากคุณไม่เห็นข้อผิดพลาดใดๆ แสดงว่าข้อผิดพลาดนั้นได้รับการแก้ไขแล้ว
  7. หากยังพบปัญหาอยู่ ให้ตรวจสอบว่ามีปัญหาด้านเครือข่ายในโปรแกรมประมวลผลข้อความหรือไม่ หากเกิดปัญหาเกี่ยวกับเครือข่าย การรีสตาร์ทตัวประมวลผลข้อความเฉพาะที่แสดงข้อผิดพลาดการหมดเวลา (ตามเอาต์พุตสถานะการทำให้ใช้งานได้) อาจแก้ปัญหาได้โดยทำดังนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. หากยังคงพบปัญหาอยู่ ให้ตรวจสอบบันทึกเซิร์ฟเวอร์การจัดการที่: (/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

  1. ทําตามขั้นตอนต่อไปนี้เพื่อเพิ่มระยะหมดเวลาของ RPC
    1. สร้างไฟล์ /opt/apigee/customer/application/management-server.properties เครื่องเซิร์ฟเวอร์การจัดการ หากยังไม่มี
    2. เพิ่มบรรทัดต่อไปนี้ในไฟล์นี้
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      ค่าระยะหมดเวลา RPC เริ่มต้นคือ 10 และเราขอแนะนำให้เพิ่มเป็น 40 วินาที ตั้งค่าดังนี้

      conf_cluster_rpc.connect.timeout=40
      
    3. ตรวจสอบว่า apigee เป็นเจ้าของไฟล์นี้:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. รีสตาร์ทเซิร์ฟเวอร์การจัดการโดยทำดังนี้
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
      
    5. หากคุณมีเซิร์ฟเวอร์การจัดการมากกว่า 1 เซิร์ฟเวอร์ ให้ทำขั้นตอนข้างต้นซ้ำในเซิร์ฟเวอร์การจัดการทั้งหมด
    6. ทำให้พร็อกซี API ใช้งานได้ใน Edge UI หรือใช้การเรียก Edge Management API หากมีการทำให้พร็อกซี API ใช้งานได้โดยไม่มีปัญหาใดๆ แสดงว่าปัญหาได้รับการแก้ไขแล้ว
  2. หากปัญหายังคงอยู่ ให้รวบรวมคำสั่ง tcpdump จากเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อความ เปิดใช้คำสั่ง tcpdump ในแต่ละเซิร์ฟเวอร์ แล้วเริ่มทำให้พร็อกซี API ใช้งานได้จาก UI หรือใช้ Management API ดังนี้
    1. เรียกใช้คำสั่ง tcpdump ด้านล่างจากเซิร์ฟเวอร์การจัดการ:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. เรียกใช้คำสั่ง tcpdump ด้านล่างจากตัวประมวลผลข้อความ:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. โปรดติดต่อฝ่ายสนับสนุนของ Apigee Edge เพื่อรับความช่วยเหลือในการวิเคราะห์ tcpdump และแก้ปัญหาเพิ่มเติม

แพ็กเกจพร็อกซี API ขนาดใหญ่

การวินิจฉัย

  1. ตรวจสอบขนาดของแพ็กเกจพร็อกซี API ที่พบข้อผิดพลาดในการทำให้ใช้งานได้
  2. ถ้าไฟล์มีขนาดใหญ่พอสมควร (10 MB ขึ้นไป) ก็เป็นไปได้มากว่าโปรแกรมประมวลผลข้อความอาจต้องใช้เวลาเพิ่มเติมในการเปิดใช้งานพร็อกซี API
  3. หากกลุ่มพร็อกซี API ใหญ่กว่า 15 MB ให้ไปที่ แพ็กเกจพร็อกซี API ที่มีขนาดใหญ่กว่า 15 MB

ความละเอียด

หมายเหตุ: เฉพาะผู้ใช้ Edge Private Cloud เท่านั้นที่ดำเนินการตามขั้นตอนต่อไปนี้ได้ หากคุณใช้ Edge Public Cloud โปรดติดต่อทีมสนับสนุนของ Apigee Edge

เพิ่มระยะหมดเวลา RPC ในเซิร์ฟเวอร์การจัดการเพื่อให้ผู้ประมวลผลข้อความมีเวลาเพียงพอที่จะเปิดใช้งานกลุ่มพร็อกซี API ขนาดใหญ่ ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มค่าระยะหมดเวลาของ RPC

  1. สร้างไฟล์ /opt/apigee/customer/application/management-server.properties ในเครื่องเซิร์ฟเวอร์การจัดการหากยังไม่มีไฟล์ดังกล่าวอยู่แล้ว
  2. เพิ่มบรรทัดต่อไปนี้ในไฟล์นี้
    conf_cluster_rpc.connect.timeout=<time in seconds>
    

    ค่าระยะหมดเวลา RPC เริ่มต้นคือ 10 และเราขอแนะนำให้เพิ่มเป็น 40 วินาที ตั้งค่าดังนี้

    conf_cluster_rpc.connect.timeout=40
    
  3. ตรวจสอบว่า apigee เป็นเจ้าของไฟล์นี้:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. รีสตาร์ทเซิร์ฟเวอร์การจัดการโดยทำดังนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. หากคุณมีเซิร์ฟเวอร์การจัดการมากกว่า 1 เซิร์ฟเวอร์ ให้ทำขั้นตอนข้างต้นซ้ำในเซิร์ฟเวอร์การจัดการทั้งหมด

หากปัญหายังคงอยู่ โปรดติดต่อทีมสนับสนุนของ Apigee Edge เพื่อขอความช่วยเหลือเพิ่มเติม