配置路由器上的 I/O 超时

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

<ph type="x-smartling-placeholder">

本文档介绍了如何在 Apigee Edge 的路由器上配置 I/O 超时。

路由器上的 I/O 超时表示路由器等待接收 在建立连接并发送请求后,从消息处理器返回 发送到消息处理器路由器上的 I/O 超时的默认值为 57 秒。

路由器的 I/O 超时可以在 57 秒的默认值的基础上增加或减少 。可以通过以下方式进行配置:

  • 在虚拟主机中
  • 在路由器上

以下属性用于控制路由器上的 I/O 超时:

属性名称 位置 说明
proxy_read_timeout 虚拟主机

指定路由器等待接收来自 建立连接并将请求发送到 消息处理器。

如果消息处理器在此超时时间段内没有响应, 路由器超时。

默认情况下,此属性采用为 conf_load_balancing_load.balancing.driver.proxy.read.timeout 属性。通过 默认值为 57 秒

如果在特定虚拟主机中使用新的超时值修改此属性,则: 只有使用该特定虚拟主机的 API 代理会受到影响。

conf_load_balancing_load.balancing.driver.proxy.read.timeout 路由器

指定路由器等待接收来自 建立连接并将请求发送到 消息处理器。

如果消息处理器在此超时时间段内没有响应, 路由器超时。

此属性用于此路由器上的所有虚拟主机。

此属性的默认值为 57 秒

您可以按照 如下文所述在路由器上配置 I/O 超时,您也可以覆盖 通过在虚拟主机级别设置 proxy_read_timeout 属性来设定此值。

您可以使用 以下表示法:

ms: milliseconds
s:  seconds (default)
m:  minutes
h:  hours
d:  days
w:  weeks
M:  months (length of 30 days)
y:  years (length of 365 days)
conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout 路由器

指定路由器等待接收来自所有消息的响应的总时间 处理器(在建立连接并向每条消息发送请求后) 处理器。

当您的 Edge 安装有多个消息处理器且 出错时启用重试。其值为以下某个值:

  • conf_load_balancing_load.balancing.driver.proxy.read.timeout 的当前值
  • 默认值 57 秒

conf_load_balancing_load.balancing.driver.proxy.read.timeout 一样, 属性,则可以指定除默认值(秒)之外的时间间隔。

准备工作

在使用本文档中的步骤之前,请确保您了解以下主题:

。 <ph type="x-smartling-placeholder">

在虚拟主机中配置 I/O 超时

本部分介绍了如何在与 组织和环境。可以通过 属性 proxy_read_timeout,表示以秒为单位的 I/O 超时值。

<ph type="x-smartling-placeholder">。 <ph type="x-smartling-placeholder">

您可以使用以下方法之一配置虚拟主机:

  • Edge 界面
  • Edge API

Edge 界面

<ph type="x-smartling-placeholder">

如需使用 Edge 界面配置虚拟主机,请执行以下操作:

  1. 登录 Edge 界面
  2. 转到管理 >虚拟主机中所述。
  3. 选择要进行此更改的特定环境
  4. 选择要为其配置新虚拟机的特定虚拟主机 I/O 超时值。
  5. 属性下,更新代理读取超时值(以秒为单位)。

    例如,如果您要将超时时长更改为 120 秒,请按 如下图所示:

    代理读取超时值为 120

  6. 保存更改。

Edge API

如需使用 Edge API 配置虚拟主机,请执行以下操作:

  1. 使用 <ph type="x-smartling-placeholder"></ph> 获取虚拟主机 API,如下所示:

    公有云用户

    curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    Private Cloud 用户

    curl -v -X GET http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    其中:

    {organization-name} 是组织的名称

    {environment-name} 是环境的名称

    {virtualhost-name} 是虚拟主机的名称

    虚拟主机配置示例

        {
          "hostAliases": [
            "api.myCompany,com"
          ],
          "interfaces": [],
          "listenOptions": [],
          "name": "secure",
          "port": "443",
          "retryOptions": [],
          "sSLInfo": {
            "ciphers": [],
            "clientAuthEnabled": "false",
            "enabled": "true",
            "ignoreValidationErrors": false,
            "keyAlias": "myCompanyKeyAlias",
            "keyStore": "ref://myCompanyKeystoreref",
            "protocols": []
          },
          "useBuiltInFreeTrialCert": false
        }
    
  2. 将属性 proxy_read_timeout 添加到现有虚拟主机配置中 properties 下的 JSON 载荷,值以秒为单位。

    例如,如需将 I/O 超时更改为 120 秒,请添加 properties 代码块中,如下所示:

    更新后的虚拟主机配置示例

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    
  3. 将更新后的虚拟主机配置保存在文件中。例如 virtualhost-payload.json
  4. 使用以下代码更改 virtualhost 配置: <ph type="x-smartling-placeholder"></ph> 按如下方式更新虚拟主机 API:

    公有云用户

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    Private Cloud 用户

    curl -v -X POST Content-Type: application/json
    http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    其中:

    {organization-name} 是组织的名称

    {environment-name} 是环境的名称

    {virtualhost-name} 是虚拟主机的名称

验证虚拟主机上的 I/O 超时

本部分介绍如何验证是否已在 虚拟主机。

  1. 执行 <ph type="x-smartling-placeholder"></ph> 获取虚拟主机 API 以获取 virtualhost 配置,如下所示:

    公有云用户

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    Private Cloud 用户

    curl -v -X GET http://<management server-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    其中:

    {organization-name} 是组织的名称

    {environment-name} 是环境的名称

    {virtualhost-name} 是虚拟主机的名称

  2. 验证属性 proxy_read_timeout 是否已设置为新值。

    更新后的虚拟主机配置示例

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    

    请注意,在上面的示例中,proxy_read_timeout 已设置为使用 新的 120 秒值

  3. 如果您仍然看到 proxy_read_timeout, 的旧值,请验证您是否 已正确执行在虚拟主机中配置 I/O 超时中列出的所有步骤。 如果您遗漏了任何步骤,请再次正确地重复所有步骤。
  4. 如果您仍然无法修改 I/O 超时,请与 Apigee Edge 支持团队联系。

在路由器上配置 I/O 超时

本部分介绍了如何在路由器上配置 I/O 超时。I/O 超时可以是 通过路由器属性配置 conf_load_balancing_load.balancing.driver.proxy.read.timeout,表示 I/O 超时值(以秒为单位)。

<ph type="x-smartling-placeholder">。 <ph type="x-smartling-placeholder">

如需在路由器上配置 I/O 超时,请执行以下操作:

  1. 在路由器计算机上,通过编辑器打开以下文件。如果尚未存在,请创建一个。
    /opt/apigee/customer/application/router.properties
    

    例如,要使用 vi,请输入以下命令:

    vi /opt/apigee/customer/application/router.properties
    
  2. 将采用以下格式的代码行添加到 properties 文件中,注意要将代码替换为 time_in_seconds 的值:
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds
    

    例如,要将路由器上的 I/O 超时更改为 120 秒,请添加以下行:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
    

    您还可以修改 I/O 超时(以分钟为单位)。例如,将超时时间更改为 添加以下代码行:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
    
  4. 保存更改。
  5. 确保此属性文件归 apigee 用户所有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
    
  6. 重启路由器,如下所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
    
  7. 如果您有多个路由器,请在所有路由器上重复上述步骤。

验证路由器上的 I/O 超时

本部分介绍如何验证是否已在 路由器。

即使您使用了 conf_load_balancing_load.balancing.driver.proxy.read.timeout,用于设置 I/O 超时 您需要验证实际属性 proxy_read_timeout 是否 新值

  1. 在以下位置搜索属性 proxy_read_timeout/opt/nginx/conf.d 目录,并检查是否已使用 新值,如下所示:
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
    
  2. 如果在路由器上成功设置了新的 I/O 超时值,则上述命令 在所有虚拟主机配置文件中显示新值。

    以下是执行上述操作时,上述 grep 命令的示例结果 I/O 超时为 120 秒:

    /opt/nginx/conf.d/0-default.conf:proxy_read_timeout 120;
    /opt/nginx/conf.d/0-edge-health.conf:proxy_read_timeout 1s;
    

    在上面的示例输出中,请注意属性 proxy_read_timeout 0-default.conf 中的新值 120 是 默认虚拟主机的配置文件。这表示 I/O 超时 在路由器上成功配置为 120 秒。

    <ph type="x-smartling-placeholder">
  3. 如果您仍然看到属性 proxy_read_timeout 的旧值,则 请确认您已遵循 正确配置路由器上的 I/O 超时。如果您有 遗漏了任何步骤,请重新正确地重复所有步骤。
  4. 如果您仍然无法修改 I/O 超时,请与 Apigee Edge 支持团队联系。

下一步是什么?

了解如何配置消息处理器中的 I/O 超时