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

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

ลักษณะปัญหา

การติดตั้งใช้งานการแก้ไขพร็อกซี API ผ่าน UI ของ Edge หรือ Management 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 เท่านั้น
App Bundle ของพร็อกซี API มีขนาดใหญ่ ตัวประมวลผลข้อความอาจใช้เวลานานในการเปิดใช้งานหาก App Bundle ของพร็อกซี API มีขนาดใหญ่ใน ขนาด ซึ่งจะทำให้เกิดระยะหมดเวลาของ RPC ผู้ใช้ Private และ Public Cloud

ปัญหาการเชื่อมต่อเครือข่าย

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

การวินิจฉัย

  1. รับสถานะการติดตั้งใช้งานสำหรับ API ที่เฉพาะเจาะจงซึ่งแสดงข้อผิดพลาดโดยใช้การเรียก Management 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. ตรวจสอบว่า Message Processor กำลังฟังพอร์ต 4528 หรือไม่
      netstat -an | grep LISTEN | grep 4528

      หาก Message Processor ไม่ได้ฟังพอร์ต 4528 ให้รีสตาร์ท Message Processor:

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

App Bundle ของพร็อกซี API มีขนาดใหญ่

การวินิจฉัย

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

ความละเอียด

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

เพิ่มระยะหมดเวลาของ RPC ในเซิร์ฟเวอร์การจัดการเพื่อให้ Message Processor มีเวลาเพียงพอในการ เปิดใช้งาน App Bundle ของพร็อกซี 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 เพื่อขอความช่วยเหลือเพิ่มเติม