查看 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 支援團隊聯絡。
診斷
- 使用下列指令,取得顯示錯誤的特定 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
」。 - 依據您 API Proxy 的部署狀態輸出,登入每則訊息
使用對應 UUID 的處理器顯示了錯誤,並執行下列步驟:
- 檢查訊息處理器是否正在監聽通訊埠 4528:
netstat -an | grep LISTEN | grep 4528
如果訊息處理器未監聽通訊埠 4528,請重新啟動「訊息」 處理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 使用畫面上顯示的 Management API 呼叫,重新檢查 API Proxy 的部署狀態 。如果沒有錯誤,表示問題已解決。
- 檢查訊息處理器是否正在監聽通訊埠 4528:
- 如果問題持續發生,請測試管理伺服器與郵件之間的連線
請按照下列步驟使用通訊埠 4528:
- 如果有 telnet,請使用 telnet:
telnet <MessageProcessor_IP> 4528
- 如果無法使用 telnet,請依照下列步驟使用 netcat 檢查連線:
nc -vz <MessageProcessor_IP> 4528
- 如果收到「Connection Refused」回應或「連線逾時」, 網路營運團隊
- 如果有 telnet,請使用 telnet:
- 測試從訊息處理者到管理伺服器 (通訊埠 4526) 的連線能力
步驟如下:
- 如果有 telnet,請使用 telnet:
telnet <management-server-IP> 4526
- 如果無法使用 telnet,請依照下列步驟使用 netcat 檢查連線:
nc -vz <management-server-IP> 4526
- 如果收到「Connection Refused」回應或「連線逾時」,請 網路營運團隊
- 如果有 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
- 如果您有多個管理伺服器,請在所有 管理伺服器:
- 在 Edge UI 中部署 API Proxy,或是使用 Edge Management API 呼叫來部署 API。如果 API Proxy 即可部署,沒有任何問題。接著表示問題已解決。
- 建立檔案
- 如果問題仍未解決,請收集
tcpdump 指令在管理伺服器和訊息處理器之間執行啟用 tcpdump
然後從使用者介面啟動 API Proxy 的部署作業
或使用 Management API:
- 從 Management Server 執行下列 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
- 從 Management Server 執行下列 tcpdump 指令:
大 API Proxy 套件
診斷
- 檢查發生部署錯誤的 API Proxy 套裝組合大小 。
- 如果網頁大小合理 (10MB 以上),則很可能是 處理器可能需要更多時間才能啟用 API Proxy。
- 如果 API Proxy 組合大小超過 15 MB,請繼續 API Proxy 套件超過 15 MB。
解析度
注意:只有 Edge Private Cloud 使用者可以執行下列步驟。如果發生以下情況: 已在 Edge Public Cloud 中,請與 Apigee Edge 支援團隊聯絡。
增加管理伺服器的 RPC 逾時,讓訊息處理器有足夠的時間可 啟用大型 API Proxy 套裝組合執行下列步驟來增加遠端程序呼叫 (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
- 如果您的管理伺服器不只一個,請在所有管理程序中重複上述步驟。 伺服器。
如果問題持續發生,請與 Apigee Edge 支援團隊聯絡, 以便獲得進一步協助