Spring Boot内置Tomcat如何调整配置允许单客户端更多连接重试用于压测?
Spring Boot 内嵌Tomcat负载测试专属配置方案
你之前配置的server.tomcat.max-threads是Tomcat处理请求的工作线程数上限,和连接被拒绝没有直接关联。你遇到的1万条请求左右触发连接拒绝,是因为触发了Tomcat默认的最大连接数、单IP连接数限制,或者等待队列满的阈值,可通过以下配置调整:
application.properties 核心配置
- 调整全局最大连接数:
server.tomcat.max-connections = 20000
该参数控制Tomcat同时支持的最大连接数,默认值通常为8192~10000,和你报错的阈值吻合,可根据测试需求调整到预期的并发连接数之上。 - 放开单IP连接数限制:
server.tomcat.max-connections-per-ip = 10000
该参数限制单个客户端IP可建立的最大连接数,默认值通常为100,单客户端发起负载测试必须调高该参数。 - 调整连接等待队列长度:
server.tomcat.accept-count = 1000
当所有工作线程都被占用时,新连接会进入等待队列,队列满之后新连接会被直接拒绝,默认值仅为100,负载测试场景需要大幅调高。 - 补充工作线程与超时配置:
# Spring Boot 2.x版本工作线程配置 server.tomcat.max-threads = 500 # Spring Boot 3.x版本工作线程配置 server.tomcat.threads.max = 500 # 连接超时时间,单位毫秒 server.tomcat.connection-timeout = 60000
配套检查项
- 先调整操作系统的文件句柄限制,每个TCP连接对应一个文件句柄,Linux默认单个进程仅允许打开1024个文件句柄,远低于负载测试需求,临时调整可执行命令
ulimit -n 65535,永久调整需修改/etc/security/limits.conf配置。 - 可优化Python测试脚本使用HTTP连接池复用连接,减少短连接频繁创建销毁的开销,同时降低连接数占用。
内容的提问来源于stack exchange,提问作者BenW
相关产品推荐
相关产品推荐

