超时错误

<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 支持联系。

诊断

  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 代理的部署状态输出,登录到每条消息 具有显示错误的相应 UUID 的处理器,并执行以下步骤: <ph type="x-smartling-placeholder">
      </ph>
    1. 检查消息处理器是否正在端口 4528 上进行监听:
      netstat -an | grep LISTEN | grep 4528
      

      如果消息处理器未监听端口 4528,则重启消息 处理器:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. 使用显示的 Management API 调用重新检查 API 代理的部署状态 。如果没有错误,则表示问题已解决。
  3. 如果问题仍然存在,请测试从管理服务器到邮件的连接 按照以下步骤使用端口 4528 上的处理器: <ph type="x-smartling-placeholder">
      </ph>
    1. 如果 telnet 可用,则使用 telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. 如果 telnet 不可用,请使用 netcat 检查连接,如下所示:
      nc -vz <MessageProcessor_IP> 4528
      
    3. 如果您收到“连接遭拒”的响应或“连接超时”, 您的网络运营团队
  4. 在端口 4526 上测试从邮件处理器到管理服务器的连接 : <ph type="x-smartling-placeholder">
      </ph>
    1. 如果 telnet 可用,则使用 telnet:
      telnet <management-server-IP> 4526
      
    2. 如果 telnet 不可用,请使用 netcat 检查连接,如下所示:
      nc -vz <management-server-IP> 4526 
      
    3. 如果您收到“连接遭拒”的响应或“连接超时”, 网络运营团队
  5. 请与您的网络运营团队合作,并执行以下操作: <ph type="x-smartling-placeholder">
      </ph>
    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 公有云上,请与 Apigee Edge 支持联系。

  1. 执行以下步骤以延长 RPC 超时: <ph type="x-smartling-placeholder">
      </ph>
    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 界面中或使用 Edge Management API 调用部署 API 代理。如果 API 代理部署后没有任何问题,这表明问题已解决。
  2. 如果问题仍然存在,请收集 tcpdump 命令处理 tcpdump。启用 tcpdump 命令,然后从用户界面开始部署 API 代理。 或使用 Management API: <ph type="x-smartling-placeholder">
      </ph>
    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. 如果邮件大小相当大(10MB 或更高),那么邮件很可能 处理方可能需要更多时间才能激活 API 代理。
  3. 如果 API 代理软件包大小超过 15 MB,则转至 超过 15MB 的 API 代理软件包

分辨率

注意:只有 Edge Private Cloud 用户可以执行以下步骤。如果您 位于 Edge 公有云上,请与 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. 如果您有多个管理服务器,请针对所有管理服务器重复上述步骤 服务器。

如果问题仍然存在,请与 Apigee Edge 支持团队联系以获取 进一步协助。