配置消息处理器上的保持活跃超时设置

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

本文档介绍如何为 Apigee Edge 消息处理器配置 keep-alive 超时。

消息处理器上的 keep-alive 超时允许单个 TCP 连接向后端服务器发送和接收多个 HTTP 请求/响应,而不是为每个请求/响应对打开新连接。

消息处理器上的 keep alive 超时属性的默认值为 60 秒。此超时期限适用于在目标端点配置和 API 代理的 ServiceCallout 政策中配置的后端服务器。

您可以根据自己的需求从默认值(60 秒)增加或减少消息处理器的 keep-alive 超时。它可以通过以下方式进行配置:

  • 在 API 代理中
    • 在目标端点中
    • ServiceCallout 政策中
  • 在消息处理器上

以下属性用于控制消息处理器上的 keep alive 超时:

属性名称 位置 说明
keepalive.timeout.millis API 代理:
  • 目标端点
  • ServiceCallout 政策

这是消息处理器允许单个 TCP 连接发送和接收多个 HTTP 请求/响应(而不是为每个请求/响应对打开新连接)的最大空闲时间。

默认情况下,此属性采用为消息处理器上的 HTTPClient.keepalive.timeout.millis 属性设置的值,其中默认值为 60 秒。

如果使用目标端点中使用的目标服务器的新超时值或特定 API 代理中的 ServiceCallout 政策修改此属性,则仅该特定目标服务器的保持活跃时间会受到影响。

HTTPClient.keepalive.timeout.millis 消息处理器

这是消息处理器允许单个 TCP 连接发送和接收多个 HTTP 请求/响应(而不是为每个请求/响应对打开新连接)的最大空闲时间。

此属性用于此消息处理器上运行的所有 API 代理。

此属性的默认值为 60 秒。

您可以按照下方在消息处理器上配置 keepalive 超时中的说明修改此属性,也可以通过在 API 代理级别设置 keepalive.timeout.millis 属性来覆盖此值。

准备工作

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

在 API 代理中配置 keepalive 超时

您可以在 API 代理中的以下位置配置 keep-alive 超时:

  • 目标端点
  • ServiceCallout 政策

在 API 代理的目标端点中配置 keep-alive 超时

本部分介绍如何在 API 代理的目标端点中配置 keep-alive 超时。您可以通过 keepalive.timeout.millis 属性来配置 keep-alive 超时值,表示以毫秒为单位的 keep-alive 超时值。

  1. 在 Edge 界面中,选择要配置新的 keep-alive 超时值的具体 API 代理。
  2. 选择您要修改的特定目标端点。
  3. TargetEndpoint 配置中的 <HTTPTargetConnection> 元素下,添加具有适当值的 keepalive.timeout.millis 属性。

    例如,如需将 keep alive Timeout 更改为 30 秒,请添加以下代码块:

    <Properties>
      <Property name="keepalive.timeout.millis">30000</Property>
    </Properties>
    

    由于 keepalive.timeout.millis 属性以毫秒为单位,因此 30 秒的值为 30000

    以下示例展示了如何在 API 代理的目标端点配置中配置 keep-alive 超时:

    使用后端服务器网址的目标端点配置示例

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <URL>https://mocktarget.apigee.net/json</URL>
        <Properties>
          <Property name="keepalive.timeout.millis">30000</Property>
        </Properties>
      </HTTPTargetConnection>
    </TargetEndpoint>
    

    使用目标服务器配置目标端点的示例

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="keepalive.timeout.millis">30000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
    
  4. 保存对 API 代理所做的更改。

在 API 代理的 ServiceCallout 政策中配置 keep-alive 超时

本部分介绍如何在 API 代理的 ServiceCallout 政策中配置 keep-alive 超时。您可以通过 the keepalive.timeout.millis 属性配置 keep-alive 超时值,该属性表示保持连接状态超时值(以毫秒为单位)。

如需使用 keepalive.timeout.millis 属性在 ServiceCallout 政策中配置 keep-alive 超时,请执行以下操作:

  1. 在 Edge 界面中,选择要为 ServiceCallout 政策配置新的 keep-alive 超时值的具体 API 代理。
  2. 选择要修改的特定 ServiceCallout 政策。
  3. TargetEndpoint 配置中的 <HTTPTargetConnection> 元素下,添加具有适当值的 keepalive.timeout.millis 属性。

    例如,如需将 keep-alive 超时更改为 30 秒,请添加以下代码块:

    <Properties>
      <Property name="keepalive.timeout.millis">30000</Property>
    </Properties>
    

    由于 keepalive.timeout.millis 属性以毫秒为单位,因此 30 秒的值为 30000

    以下示例展示了如何在 API 代理的 ServiceCallout 政策中配置 keep-alive 超时:

    使用后端服务器网址的 ServiceCallout 政策配置示例

    <ServiceCallout name="Service-Callout-1">
      <DisplayName>Service Callout-1</DisplayName>
      <HTTPTargetConnection>
        <Properties>
          <Property name="keepalive.timeout.millis">30000</Property>
        </Properties>
        <URL>https://mocktarget.apigee.net/json</URL>
      </HTTPTargetConnection>
    </ServiceCallout>
    

    使用目标服务器的 ServiceCallout 政策配置示例

    <ServiceCallout enabled="true" name="Service-Callout-1">
      <DisplayName>Service Callout-1</DisplayName>
      <Response>calloutResponse</Response>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="keepalive.timeout.millis">30000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </ServiceCallout>
    
  4. 保存对 API 代理所做的更改。

在消息处理器上配置 keepalive 超时

本部分介绍了如何在消息处理器上配置 keep-alive 超时。您可以通过属性 HTTPClient.keepalive.timeout.millis 来配置保持活动超时时间,该属性表示消息处理器组件上的保持活动超时值(以毫秒为单位)。由于此属性对消息处理器进行了注释,因此您需要使用特殊语法 conf/http.properties+HTTPClient.keepalive.timeout.millis,如 如何配置 Edge 中的 设置当前被注释掉的令牌部分中所述。

如需在消息处理器上配置 keep alive 超时,请执行以下操作:

  1. 在 Message Processor 计算机上,在编辑器中打开以下文件。如果不存在,则创建一个。
    /opt/apigee/customer/application/message-processor.properties
    

    例如,要使用 vi 打开文件,请输入以下命令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 按以下格式向属性文件添加一行代码,并将 TIME_IN_MILLISECONDS 替换成一个值:
    conf/http.properties+HTTPClient.keepalive.timeout.millis=TIME_IN_MILLISECONDS
    

    例如,如需将消息处理器上的 keep alive 超时更改为 30 秒,请添加以下代码行:

    conf/http.properties+HTTPClient.keepalive.timeout.millis=30000
    
  3. 保存更改。
  4. 确保属性文件归 apigee 用户所有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 重启消息处理器,如下所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 如果您有多个消息处理器,请对所有消息处理器重复上述步骤。

验证消息处理器上的 keepalive 超时

本部分介绍如何验证消息处理器上的 keep alive 超时是否已成功修改。

即使您使用特殊语法 conf/http.properties+HTTPClient.keepalive.timeout.millis 在消息处理器上设置 keep alive 超时,也需要验证是否使用新值设置了实际属性 HTTPClient.keepalive.timeout.millis

  1. 在消息处理器机器上,在 /opt/apigee/edge-message-processor/conf 目录中搜索属性 HTTPClient.keepalive.timeout.millis,并检查它是否已使用新值进行设置,如下所示:
    grep -ri "HTTPClient.keepalive.timeout.millis" /opt/apigee/edge-message-processor/conf
    
  2. 如果在消息处理器上成功设置了新的 keep-alive 超时值,则上述命令会在 http.properties 文件中显示新值。

    将 keepalive 超时配置为 30 秒后,上述命令产生的示例结果如下所示:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPClient.keepalive.timeout.millis=30000
    

    在上面的示例输出中,请注意 HTTPClient.keepalive.timeout.millis 属性已在 http.properties 中使用新值 30000 进行设置。这表示消息处理器上的 keep alive 超时已成功配置为 30 秒。

  3. 如果您仍然看到属性 HTTPClient.keepalive.timeout.millis 的旧值,请验证是否已正确执行在消息处理器上配置 keepalive 超时中所述的所有步骤。如果您遗漏了任何步骤,请重新正确重复所有步骤。
  4. 如果您仍无法修改 keepalive 超时,请与 Google Cloud Apigee Edge 支持团队联系。