配置 I/O 超时的最佳做法

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

客户端应用发出的 API 请求会先流经 Apigee Edge 中的各个组件,然后才到达后端服务。大多数客户端应用都希望能及时收到对这些请求的响应。

为了及时响应,请在 API 请求流经的每个组件中设置 I/O 超时值。如果流中任何组件花费的时间超过前一个组件的时间,则前一个组件会超时并返回 504 Gateway Timeout 错误

配置超时设置时,您应非常谨慎地在每个组件中配置相应的值,否则可能会导致 504 Gateway Timeout 错误

本文档介绍了在 Apigee Edge 中 API 请求流经的各个组件上配置 I/O 超时的最佳做法。

配置 I/O 超时的最佳实践

配置 I/O 超时时,请考虑采用以下最佳实践:

  • 第一个组件:始终对 API 请求流程中的第一个组件(即 Apigee Edge 中的客户端应用)使用最长的超时。
  • 最后一个组件:始终对 API 请求流程中的最后一个组件(即 Apigee Edge 中的后端服务)使用最低超时值。
  • 组件之间:确保在每个组件中配置的超时值在流程中第一个组件和最后一个组件之间至少相差 2-3 秒。
  • 路由器:最好是配置(修改)特定虚拟主机的 I/O 超时值,而不是在路由器上配置该值。这样可以确保新的超时值只会影响使用特定虚拟主机的 API 代理,而不会影响路由器提供服务的所有 API 代理。

    仅当您绝对确定需要或适用于路由器上运行的所有 API 代理,必须使用新的 I/O 超时值时,才可在路由器上配置(修改)I/O 超时值。

  • 消息处理器:与在消息处理器上配置(修改)特定 API 代理的 I/O 超时值相反,始终是一种很好的做法。这样可以确保新的超时值仅影响特定的 API 代理,而不是影响消息处理器处理的所有 API 代理。

    仅当您绝对确定在消息处理器上运行的所有 API 代理需要或适用于新的 I/O 超时值时,才在消息处理器上配置(修改)I/O 超时值。

场景示例

本部分中的场景有助于您了解如何正确设置 I/O 超时值。

场景 1:直接从客户端应用向 Apigee Edge 发出请求

本部分介绍在客户端应用和 Apigee Edge 之间以及 Apigee Edge 与后端服务器之间没有中间组件的 Apigee Edge 设置中,设置超时值时可遵循的最佳做法。

不含中间组件的 Apigee 设置示例

从客户端开始的流程依次前往路由器、消息处理器和后端服务器

如果 Apigee Edge 设置如上图所示,不包含中间组件,请遵循以下最佳实践:

  1. 客户端应用是流程中的第一个组件。应在客户端上设置最长超时值。
  2. 后端服务器是流中的最后一个组件。应在后端服务器上设置最短超时值。
  3. 按以下顺序为每个组件配置超时值:

    依次为客户端、路由器、消息处理器和后端服务器配置超时设置

    以下示例展示了按照上述准则在各种组件上设置的超时值,以避免任何问题:

    将客户端的超时时间配置为 60 秒,将路由器配置为 57 秒,然后为消息处理器配置 55 秒,最后将后端服务器配置为 52 秒

场景 2:通过中间组件从客户端应用向 Apigee Edge 发出请求

本部分介绍在客户端应用和 Apigee Edge 之间以及 Apigee Edge 与后端服务器之间有一个或多个中间组件的 Apigee Edge 设置中,设置超时值时要遵循的最佳做法。

中间组件可以是负载平衡器、内容分发网络 (CDN)、NGINX 等。

在 Apigee Edge 与后端服务器之间以及 Apigee Edge 与后端服务器之间包含一个中间组件的 Apigee 设置示例

从客户端开始的流程,依次前往中间组件 1、路由器、消息处理器、中间组件 2 和后端服务器

如果按照上图所示设置 Apigee Edge,且设置了一个或多个中间组件,请遵循以下最佳实践:

  1. 客户端应用是流程中的第一个组件。应在客户端上设置最高 timeout 值。
  2. 后端服务器是流中的最后一个组件。应在后端服务器上设置最低 超时值。
  3. 按以下顺序配置每个组件(包括中间组件)的超时值:

    配置客户端超时,然后配置中间组件 1、路由器、消息处理器、中间组件 2、后端服务器

    以下示例展示了按照上述准则在各种组件上设置的超时值,以避免任何问题:

    将客户端的超时时间配置为 63 秒,将中间组件 1 配置为 60 秒,接着将路由器配置为 57 秒,然后配置消息处理器 st 55 秒,将中间组件 2 配置为 52 秒,最后将后端服务器配置为 59 秒