JMeter测试遇WebSocket I/O错误:主机软件中止已建立连接
JMeter WebSocket连接被主动断开问题排查方案
针对你遇到的「WebSocket I/O error:主机上的软件中止了已建立的连接」报错,以下是具体排查方向:
1. 服务端配置与日志检查
- 核实服务端WebSocket的空闲超时/连接超时设置:比如Nginx的
proxy_read_timeout、Spring Boot的server.websocket.timeout等,若测试期间连接空闲时长超过阈值,服务端会主动断开连接。 - 查看服务端的应用日志、WebSocket组件日志,定位对应连接断开的具体触发原因(如内存不足、连接数超限、业务逻辑主动关闭连接)。
2. JMeter客户端配置优化
- 启用WebSocket心跳机制:在JMeter的WebSocket Sampler中添加
Ping Frame,设置固定时间间隔发送心跳包,避免服务端因连接空闲断开。 - 调整JMeter连接池参数:修改
jmeter.properties中的httpclient4.idletimeout、httpclient4.timeout,确保与服务端超时配置匹配,防止客户端提前回收连接。 - 开启详细调试日志:在
jmeter.properties中设置log_level.jmeter.protocol.http=DEBUG,捕获WebSocket交互的完整帧数据,确认断开前服务端是否发送了Close帧。
3. 网络中间件排查
- 检查防火墙、负载均衡设备的连接管控策略:是否存在连接超时、并发连接数限制,超过阈值后会强制切断连接。
- 验证单用户与多用户场景:若单用户测试无问题,多用户时出现报错,大概率是服务端最大连接数上限被触发,服务端主动断开旧连接以接纳新连接。
附报错截图:
内容的提问来源于stack exchange,提问作者NeYurik
相关产品推荐
相关产品推荐

