JMeter压测WebSocket API时仅读取首条数据的解决办法咨询
解决JMeter WebSocket压测仅读取第一条文件数据的问题
排查文件读取配置
- 若使用
CSV Data Set Config加载文件:- 确认Recycle on EOF设为
True,让文件读完后循环读取;若需读完即停,设为False但要保证循环次数与文件行数匹配。 - 检查Delimiter(分隔符)是否与文件内数据的分隔规则一致,避免多条数据被识别为单条。
- 根据需求选择是否勾选Stop thread on EOF,无需读完停线程则保持不勾选。
- 确认Recycle on EOF设为
- 若使用
__FileToString函数读取文件:- 默认函数仅读取一次内容,需每次迭代重新读取的话,添加
cache=false参数,示例:${__FileToString(data.txt,,cache=false)},确保每次请求都获取最新文件内容。
- 默认函数仅读取一次内容,需每次迭代重新读取的话,添加
检查WebSocket采样器配置
- 针对
WebSocket Single Read Sampler:- 确认Read Mode与数据格式匹配(
Text或Binary),且Read Until设置合理。若需读取多条消息,可设为Close Connection或自定义结束符,避免读到第一条就停止。 - 若换用
WebSocket Request-Response Sampler,确保每个请求都配置了正确的读取逻辑,不会在单次请求中仅读取一次响应。
- 确认Read Mode与数据格式匹配(
- 检查连接复用:长连接模式下,要保证每次发送数据后都触发读取操作,而非仅在首次连接时读取。
验证线程组与迭代逻辑
- 线程组的Loop Count需设置为所需迭代次数,确保能遍历文件中所有数据行。
- 多线程场景下,
CSV Data Set Config的Sharing Mode设为All threads或Current thread group,保证每个线程能正确获取不同数据行。
检查数据发送与接收一致性
- 启用
View Results Tree监听器,查看每个请求发送的数据是否正确,确认不是仅发送了第一条数据。 - 查看WebSocket服务器端日志,确认服务器是否收到所有发送的数据,排除服务器未返回后续响应的问题。
其他注意事项
- 若文件是单条1KB数据但需重复发送,确保循环次数设置正确,且变量在每次迭代中重新赋值。
- 升级JMeter至最新稳定版本,规避旧版本WebSocket采样器的已知bug。
内容的提问来源于stack exchange,提问作者pushkar singh
相关产品推荐
相关产品推荐

