JMeter WebSocket请求返回成功但服务端无对应记录问题问询
问题排查及解决步骤
1. 解决java.lang.NoClassDefFoundError: com/google/common/base/Function报错
该错误是JMeter自带的guava依赖版本和WebSocket插件要求的版本不兼容导致,插件依赖的低版本guava中存在com.google.common.base.Function类,高版本guava已经移除该API。
解决方法:
- 下载兼容版本的guava包(推荐guava-19.0版本)
- 将jar包放入JMeter安装目录的
lib文件夹下 - 重启JMeter即可正常使用for-message、session相关组件
2. 解决服务端收不到发送消息的问题
从你提供的Sampler Results可以看到Sent bytes: 0,说明请求全程没有向外发送任何数据,结合执行流程全为接收消息的逻辑,问题出在Sampler配置上:
- 确认你使用的是支持写操作的WebSocket Sampler,不要使用仅支持读取消息的只读Sampler,推荐选择WebSocket Single Write Sampler或者双工类型的Sampler
- 检查Sampler配置项是否开启了发送消息的开关,有没有正确填写待发送的消息请求体
- 如果配置为复用现有连接,需要确认前置的WebSocket连接建立组件的连接ID,和当前写Sampler配置的连接ID完全一致
- 调整配置后重新运行,观察Sampler Results中的
Sent bytes字段,数值会匹配你发送的消息大小,此时服务端即可捕获到你发送的请求
内容的提问来源于stack exchange,提问作者Niki M
相关产品推荐
相关产品推荐

