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

JMeter并发线程数超10时不使用持久连接的原因排查

问题原因分析及解决建议

1. JMeter HTTP连接池默认配置限制

JMeter基于Apache HttpClient实现HTTP请求,默认的httpclient.maxconnections.perroute(单路由最大并发连接数)值为4。这直接导致:

  • 当并发线程数≤4时,所有线程可复用这4个连接,netstat会显示固定的4个临时端口。
  • 当线程数超过4时,超出的线程无法复用已有连接池中的连接,只能新建HTTP连接;若请求完成后连接被关闭或因闲置超时被回收,就会出现临时端口持续变化的现象。

你可以在jmeter.properties配置文件中修改参数匹配你的并发需求:

# 单路由最大并发连接数,设置为不小于你的最大线程数
httpclient.maxconnections.perroute=100
# 全局最大并发连接数,按需调整
httpclient.maxconnections=200

2. 服务器端Keep-Alive策略限制

即便JMeter勾选了Use keep-alive,如果服务器端的Keep-Alive配置限制了连接存活时间或复用次数,也会主动关闭连接,迫使JMeter新建连接:

  • 检查服务器响应头中的Keep-Alive字段,比如是否包含timeout=5(连接闲置5秒后关闭)或max=10(每个连接最多处理10次请求)。
  • 若服务器设置的MaxKeepAliveRequests过小,或Keep-Alive超时时间过短,高并发场景下连接会被频繁关闭,表现为临时端口持续变化。

3. JMeter连接池回收策略影响

JMeter连接池默认会回收闲置时间超过httpclient.connection-manager.timeout(默认5秒)的连接。高并发场景下,部分连接可能因请求间隔、处理延迟等原因触发闲置超时,被连接池回收;后续线程发起请求时只能新建连接,导致端口变化。

你可以延长闲置超时时间:

httpclient.connection-manager.timeout=30000

4. Windows系统TCP端口复用限制

Windows系统中,关闭的TCP连接会进入TIME_WAIT状态(默认持续240秒),这段时间内端口无法被复用。如果高并发下连接关闭频繁,会快速耗尽可用临时端口,JMeter只能不断使用新的临时端口,表现为端口持续变化。

你可通过修改注册表调整TcpTimedWaitDelay缩短等待时间:

  1. 打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  2. 新建DWORD值TcpTimedWaitDelay,设置为十进制30(表示30秒)
  3. 重启系统生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:32:35