逾時錯誤

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

問題

透過 Edge UI 或 Management API 部署 API Proxy 修訂版本會失敗,並逾時 錯誤。

錯誤訊息

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

可能原因

這個問題的常見原因包括:

原因 詳細資料 關於
網路連線問題 網路導致管理伺服器與訊息處理器之間的通訊失敗 連線問題或防火牆規則 僅限私有雲使用者
大型 API Proxy 套裝組合 如果 API Proxy 軟體包在 進而導致 RPC 逾時 私人與公有雲使用者

網路連線問題

注意:只有 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. 依據您 API Proxy 的部署狀態輸出,登入每則訊息 使用對應 UUID 的處理器顯示了錯誤,並執行下列步驟:
    1. 檢查訊息處理器是否正在監聽通訊埠 4528:
      netstat -an | grep LISTEN | grep 4528
      

      如果訊息處理器未監聽通訊埠 4528,請重新啟動「訊息」 處理器:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. 使用畫面上顯示的 Management API 呼叫,重新檢查 API Proxy 的部署狀態 。如果沒有錯誤,表示問題已解決。
  3. 如果問題持續發生,請測試管理伺服器與郵件之間的連線 請按照下列步驟使用通訊埠 4528:
    1. 如果有 telnet,請使用 telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. 如果無法使用 telnet,請依照下列步驟使用 netcat 檢查連線:
      nc -vz <MessageProcessor_IP> 4528
      
    3. 如果收到「Connection Refused」回應或「連線逾時」, 網路營運團隊
  4. 測試從訊息處理者到管理伺服器 (通訊埠 4526) 的連線能力 步驟如下:
    1. 如果有 telnet,請使用 telnet:
      telnet <management-server-IP> 4526
      
    2. 如果無法使用 telnet,請依照下列步驟使用 netcat 檢查連線:
      nc -vz <management-server-IP> 4526 
      
    3. 如果收到「Connection Refused」回應或「連線逾時」,請 網路營運團隊
  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. 如果您有多個管理伺服器,請在所有 管理伺服器:
    6. 在 Edge UI 中部署 API Proxy,或是使用 Edge Management API 呼叫來部署 API。如果 API Proxy 即可部署,沒有任何問題。接著表示問題已解決。
  2. 如果問題仍未解決,請收集 tcpdump 指令在管理伺服器和訊息處理器之間執行啟用 tcpdump 然後從使用者介面啟動 API Proxy 的部署作業 或使用 Management API:
    1. 從 Management Server 執行下列 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 Proxy 套件

診斷

  1. 檢查發生部署錯誤的 API Proxy 套裝組合大小 。
  2. 如果網頁大小合理 (10MB 以上),則很可能是 處理器可能需要更多時間才能啟用 API Proxy。
  3. 如果 API Proxy 組合大小超過 15 MB,請繼續 API Proxy 套件超過 15 MB

解析度

注意:只有 Edge Private Cloud 使用者可以執行下列步驟。如果發生以下情況: 已在 Edge Public Cloud 中,請與 Apigee Edge 支援團隊聯絡。

增加管理伺服器的 RPC 逾時,讓訊息處理器有足夠的時間可 啟用大型 API Proxy 套裝組合執行下列步驟來增加遠端程序呼叫 (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. 如果您的管理伺服器不只一個,請在所有管理程序中重複上述步驟。 伺服器。

如果問題持續發生,請與 Apigee Edge 支援團隊聯絡, 以便獲得進一步協助