<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
问题
通过 Edge 界面或 Management API 部署 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 代理软件包在 Google Cloud 中 造成 RPC 超时。 | 私有云和公有云用户 |
网络连接问题
注意:只有 Edge Private Cloud 用户可以执行以下步骤。如果您 位于 Edge 公有云上,请与 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 代理的部署状态输出,登录到每条消息
具有显示错误的相应 UUID 的处理器,并执行以下步骤:
<ph type="x-smartling-placeholder">
- </ph>
- 检查消息处理器是否正在端口 4528 上进行监听:
netstat -an | grep LISTEN | grep 4528
如果消息处理器未监听端口 4528,则重启消息 处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 使用显示的 Management API 调用重新检查 API 代理的部署状态 。如果没有错误,则表示问题已解决。
- 检查消息处理器是否正在端口 4528 上进行监听:
- 如果问题仍然存在,请测试从管理服务器到邮件的连接
按照以下步骤使用端口 4528 上的处理器:
<ph type="x-smartling-placeholder">
- </ph>
- 如果 telnet 可用,则使用 telnet:
telnet <MessageProcessor_IP> 4528
- 如果 telnet 不可用,请使用 netcat 检查连接,如下所示:
nc -vz <MessageProcessor_IP> 4528
- 如果您收到“连接遭拒”的响应或“连接超时”, 您的网络运营团队
- 如果 telnet 可用,则使用 telnet:
- 在端口 4526 上测试从邮件处理器到管理服务器的连接
:
<ph type="x-smartling-placeholder">
- </ph>
- 如果 telnet 可用,则使用 telnet:
telnet <management-server-IP> 4526
- 如果 telnet 不可用,请使用 netcat 检查连接,如下所示:
nc -vz <management-server-IP> 4526
- 如果您收到“连接遭拒”的响应或“连接超时”, 网络运营团队
- 如果 telnet 可用,则使用 telnet:
- 请与您的网络运营团队合作,并执行以下操作:
<ph type="x-smartling-placeholder">
- </ph>
- 确保管理服务器和邮件上都允许使用 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 公有云上,请与 Apigee Edge 支持联系。
- 执行以下步骤以延长 RPC 超时:
<ph type="x-smartling-placeholder">
- </ph>
- 创建文件
/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 界面中或使用 Edge Management API 调用部署 API 代理。如果 API 代理部署后没有任何问题,这表明问题已解决。
- 创建文件
- 如果问题仍然存在,请收集
tcpdump 命令处理 tcpdump。启用 tcpdump
命令,然后从用户界面开始部署 API 代理。
或使用 Management API:
<ph type="x-smartling-placeholder">
- </ph>
- 从管理服务器运行以下 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 代理软件包的大小 。
- 如果邮件大小相当大(10MB 或更高),那么邮件很可能 处理方可能需要更多时间才能激活 API 代理。
- 如果 API 代理软件包大小超过 15 MB,则转至 超过 15MB 的 API 代理软件包。
分辨率
注意:只有 Edge Private Cloud 用户可以执行以下步骤。如果您 位于 Edge 公有云上,请与 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
- 如果您有多个管理服务器,请针对所有管理服务器重复上述步骤 服务器。
如果问题仍然存在,请与 Apigee Edge 支持团队联系以获取 进一步协助。