请问jetty.http.idleTimeout参数在Jetty中具体是如何使用的?
Jetty
jetty.http.idleTimeout 参数使用规则 基础定义
jetty.http.idleTimeout 是Jetty服务用于控制HTTP连接空闲超时的核心参数,单位为毫秒,默认值为30000ms(即30秒)。该参数定义了TCP连接在无任何字节收发的闲置状态下,最长可保持活跃的时间阈值,超时后Jetty会主动关闭该连接,避免无效连接占用服务器端口、内存等资源。
生效规则
- 覆盖所有HTTP/1.1、HTTP/2、HTTP/3协议的连接,也包含完成WebSocket、SSE升级后的长连接场景
- 若针对单个Connector单独配置了idleTimeout,该配置优先级高于全局的
jetty.http.idleTimeout设置 - 长连接场景下只要客户端和服务端的心跳报文间隔小于该参数的配置值,连接就不会被Jetty主动断开
配置方式及注意事项
- 独立部署Jetty时,可直接在
jetty.ini中添加配置即可生效,示例如下:
上述配置将全局空闲超时设置为60秒jetty.http.idleTimeout=60000 - Spring Boot内嵌Jetty场景,可通过服务自定义器修改配置,代码示例:
import org.eclipse.jetty.server.Connector; import org.springframework.boot.web.embedded.jetty.ConfigurableJettyWebServerFactory; import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JettyConfig { @Bean public ConfigurableJettyWebServerFactory jettyWebServerFactory() { JettyServletWebServerFactory factory = new JettyServletWebServerFactory(); factory.addServerCustomizers(server -> { for (Connector connector : server.getConnectors()) { // 设置空闲超时为60秒 connector.setIdleTimeout(60000); } }); return factory; } } - 超时判断覆盖连接全生命周期的闲置阶段:包括等待请求接入的阶段、请求处理过程中无数据传输的阶段、响应返回后等待下一次复用连接的阶段,并非仅作用于请求处理环节。
注意:Jetty 9.4.x之前的旧版本中,同类功能参数名为
jetty.http.maxIdleTime,9.4.x版本之后已经统一使用jetty.http.idleTimeout作为标准参数名,旧参数名已废弃,新版本配置旧参数不会生效。
内容的提问来源于stack exchange,提问作者Zack
相关产品推荐
相关产品推荐

