You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot配置server.tomcat.connection-timeout不生效问题咨询

问题原因解析

你配置的server.tomcat.connection-timeout未生效是正常现象,该参数的作用范围和你预期的业务处理超时并不匹配:

  • server.tomcat.connection-timeout定义的是TCP连接建立、请求报文接收阶段的超时时间,指Tomcat收到客户端TCP连接请求后,等待客户端发送完整请求行、请求头的最大等待时长。你当前的场景是请求报文已经完整送达Tomcat,正在执行业务逻辑(代码中的Thread.sleep(10000)属于业务处理阶段),这个阶段不在该参数的管控范围内,所以配置不会生效。
  • spring.mvc.async.request-timeout是Spring MVC针对异步请求场景提供的业务处理超时配置,所以你使用Callable<?>时配置该参数生效符合预期。
同步接口实现5秒超时的解决方案

你当前写的是同步接口,要实现业务处理超时可以选择两种方案:

方案1:改造成异步接口(推荐)

改造成异步接口后直接使用Spring MVC提供的异步超时配置即可,改造成本最低:

  1. 修改application.properties,添加异步超时配置:
# 单位为毫秒,5秒即配置为5000
spring.mvc.async.request-timeout=5000
  1. 改造Controller接口返回值为Callable:
@PostMapping("/getdata")
public Callable<String> call() {
    return () -> {
        Thread.sleep(10000);
        return "Hello";
    };
}

改造完成后,请求超过5秒未处理完成就会自动触发超时返回。

方案2:自定义拦截器实现同步请求超时

如果不想改造成异步接口,可以自定义HandlerInterceptor拦截所有请求,在请求进入时启动定时任务,到达超时时间后如果请求仍未处理完成,主动中断请求线程并返回超时响应。注意该方案需要处理线程中断的安全问题,避免业务逻辑出现异常脏数据。

内容的提问来源于stack exchange,提问作者user15006167

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:24:04