JMeter执行脚本每40秒左右触发java.net.SocketException求助
解决JMeter每隔40秒出现java.net.SocketException的问题
常见原因及对应解决方案
1. 服务器端连接超时回收
多数服务器会设置40秒左右的空闲连接超时规则,JMeter若未配置连接复用,旧连接被服务器主动断开时就会触发该异常。
- 处理:在HTTP请求的「Advanced」标签页勾选「Keep-Alive」,开启连接复用;也可在「HTTP请求默认值」中统一配置,避免逐个请求设置。
2. JMeter连接池参数不足
默认连接池配置无法支撑长时间运行的脚本,易出现连接耗尽或复用不及时的情况。
- 处理:找到JMeter安装目录下的
user.properties文件,调整以下参数后重启JMeter:httpclient4.idletimeout=60000 # 空闲连接超时设为60秒(大于服务器的40秒阈值) httpclient4.max_total=200 # 增大连接池总容量 httpclient4.default_max_per_route=100 # 提升单路由最大连接数
3. 防火墙/代理的连接限制
测试环境的防火墙或代理可能会主动断开超过40秒的空闲连接。
- 处理:
- 联系运维调整防火墙/代理的超时规则,使其大于脚本的请求间隔;
- 若无法调整规则,可在脚本中添加心跳请求(比如每隔35秒发送一个轻量GET请求),保持连接活跃。
4. 请求间隔过长
脚本中请求间隔接近40秒时,空闲连接被服务器回收,再次请求就会触发异常。
- 处理:
- 缩短请求间隔,避免连接长时间空闲;
- 若必须保留长间隔,可在请求前添加「HTTP URL Re-writing Modifier」强制重建连接(不推荐,会增加服务器负载)。
验证方式
修改配置后运行脚本,观察40秒周期内是否仍抛出SocketException,若未出现则说明配置生效。
内容的提问来源于stack exchange,提问作者NeYurik
相关产品推荐
相关产品推荐

