云原生网关中如何合理设置idle timeout时间

更新时间:2025-03-07 05:51:23

为了节省网络资源和提高效率,本文介绍云原生网关的空闲超时时间idle timeout的设置。

背景介绍

空闲超时时间idle timeout是指一个连接在没有活动或数据传输的情况下被自动关闭或终止之前所允许的最大时间间隔;当一个连接达到这个空闲时间限制而没有任何新的数据包被发送或接收时,网关会主动断开这个连接。

设置idle timeout的主要目的是为了节省资源和提高效率。在没有活动时关闭连接可以释放网络和计算资源,以便服务于其他活动连接。特别是在高流量环境中,合理的空闲超时设置有助于防止资源不必要地被占用,减少潜在的性能瓶颈。

idle timeout的具体设置通常可以根据网络需求、应用程序特性和性能要求进行调整。在配置中,设置得太短可能导致连接过早断开,从而影响用户体验;设置得太长则可能导致资源浪费。

idle timeout基本使用场景

云原生网关作为七层网络转发程序,在处理请求时不像四层网络转发一样采用透传的方式,网关作为请求链路的中间节点,既需要维护客户端与网关之间的连接,也需要维护网关与后端服务之间的连接,站在网关的角度如何区分这两种连接?我们将客户端与网关之间的连接称为downstream,网关与后端服务之间的连接称为upstream,如下图所示:

image

既然网关需要同时维护downstreamupstream两种连接,同理idle timeout也分为 downstream idle timeout与 upstream idle timeout, downstream idle timeout 用于控制客户端与网关的空闲超时时间,upstream idle timeout 用于控制网关与后端服务的空闲超时时间。

image

这两个时间的配置项分别对应云原生网关参数配置中的DownstreamIdleTimeUpstreamIdleTimeout

除了网关中有idle timeout外在客户端与后端服务中同样存在idle timeout时间,大部分情况下我们在客户端与后端服务中使用的是开发框架或者开发语言默认的idle timeout,因此我们自身对idle timeout感知不强。所有连接都有idle timeout时间设置,客户端、网关、后端服务都可以独自设置自身的idle timeout时间,如下图:

image

idle timeout设置的最佳实践(client小于server idle timeout)

最佳实践可以总结为一句话:保持client 的 idle timeout 小于server idle timeout ,目的是让client来决定连接关闭时机。

image

client大于serveridle timeout会出现什么现象?

1. client idle timeout 大于网关 downstream idle timeout

该场景意味着连接的关闭时机由网关来控制,有可能出现client发送请求给网关时连接被网关主动关闭,此时client可能会出现503错误。

2. 网关 upstream idle timeout 大于 server idle timeout

该场景意味着连接的关闭时机由后端服务来控制,有可能出现网关发送请求给后端服务时连接被后端服务主动关闭,此时网关可能会出现503错误。

idle timeout 扩展场景介绍

同城容灾场景中的两层网关架构

一句话总结:在网络请求链路中保持前一个节点的idle timeout小于后一个节点即可。

image

  • 本页导读 (1)
  • 背景介绍
  • idle timeout基本使用场景
  • idle timeout设置的最佳实践(client小于server idle timeout)
  • 当client大于server的idle timeout会出现什么现象?
  • 1. client idle timeout 大于网关 downstream idle timeout
  • 2. 网关 upstream idle timeout 大于 server idle timeout
  • idle timeout 扩展场景介绍
  • 同城容灾场景中的两层网关架构
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等