tomcat请求超时时间由server.xml中connector的connectiontimeout属性控制,单位毫秒,默认20000;设为0表示永不超时但不建议生产使用,修改后需重启生效,环境变量完全无效。

Tomcat 请求超时时间不能通过环境变量配置。这是个常见误解——CATALINA_HOME、JAVA_HOME 等环境变量只影响启动路径和 JVM 加载,不参与运行时连接参数控制。
connectionTimeout 是 server.xml 里的 Connector 属性
真正控制 HTTP 请求超时的是 conf/server.xml 中 <connector></connector> 标签的 connectionTimeout 属性,单位毫秒。它决定客户端建立连接后,Tomcat 等待请求头发送完成的最长时间。
- 默认值通常是
20000(20 秒),不是无限或系统级配置 - 设为
0表示永不超时,但会增加资源占用风险,不建议生产使用 - 修改后必须重启 Tomcat 才生效,改环境变量完全无效
- 若同时存在多个
<connector></connector>(如 HTTP + HTTPS),需分别设置各自connectionTimeout
为什么有人误以为能用环境变量?
混淆来源通常有两类:
- 把
JAVA_OPTS当成“Tomcat 环境变量”:它确实能传参给 JVM,但只能影响 GC、堆内存等,对server.xml解析逻辑无干预能力 - 看到某些脚本里用
set CATALINA_OPTS=-Dxxx=yyy:这种-D参数是 JVM 系统属性,Tomcat 自身代码并未读取它来覆盖connectionTimeout - 误将端口冲突、防火墙拦截等现象归因为“超时没配好”,进而尝试乱加环境变量
正确修改超时时间的实操步骤
直接编辑 conf/server.xml,定位到你要调整的 <connector port="8080" ...></connector> 行,在里面添加或修改:
<connector port="8080" protocol="HTTP/1.1" connectiontimeout="30000" redirectport="8443" uriencoding="UTF-8"></connector>
- 数值建议在
15000–60000之间,具体看业务响应预期(如含大文件上传可适当调高) - 别漏掉引号,XML 属性值必须带双引号
- Linux 下注意文件权限,避免用 root 编辑后普通用户无法读取
- 改完用
bin/catalina.sh configtest(Linux)或bin/catalina.bat configtest(Windows)验证 XML 语法是否合法
真正容易被忽略的是:超时行为分多层——connectionTimeout 管连接建立,keepAliveTimeout 管长连接空闲,asyncTimeout 管异步 Servlet。它们全在 server.xml 里,没有一个靠环境变量驱动。











