上一篇Jmeter压测http(s)介绍了如何使用Jmeter压测常规的web服务接口。本文将继续演示如何使用Jmeter对ws(s)进行压力测试。
有过Socket相关开发经验的人应该都不会陌生,ws协议就是WebSocket协议,而wss对应就是在SSL上运行的WebSocket协议。有关WebSocket的知识,这里不做过多说明,有兴趣可以看看本人写的另外一篇文章:记录一次迁移wss WebSocket的事故。
配置环境
由于JMeter需要添加几个扩展Jar包后方可支持ws测试,所以我们需要配置相关的测试环境,以下是这些jar包的下载地址。
将下载好的Jar包放到JMeter的lib\ext
目录下即可。
ws测试
启动Jmeter后,右键依次选择 “测试计划” -> “添加” -> “Threads(Users)” -> “线程组” -> “Sampler” -> “WebSocket Sampler”。
选项说明:
-
- WebServer
- Server Name or IP:目标WebSocket服务器所在地址或名称
- Port Number:WebSocket 服务监听端口(http和ws一般是80端口,https和wss一般是433端口)
-
- Timeout(单位:毫秒)
- Connection:连接等待完成的最长时间
- Response:消息响应的最大等待时间
-
- WebSocket Request
- Implementation:目前仅支持RFC6455(v13) ,这也是最新版的WebSocket协议标准
- Protocol:WebSocket标识,ws或者wss
- Streaming Connection:用于TCP会话是否需要保持。如果勾上表示连接会一直存在,否则在第一次响应后该连接就会被关闭
- Request data:请求要发送的数据
- Path:WebSocket端点路径
为了方便,下面以一个在线的WebSocket网站来开展测试。分别在Server Name or IP
一栏中输入:echo.websocket.org,在Request data
一栏中输入:Send test。启动测试计划,得到如下响应结果。
wss测试
相比于ws测试,wss的测试也仅需修改两处地方。分别将Port Number
修改为:443,以及将Protocol
修改为:wss。启动测试计划后,我们同样可以得到系统的正常响应。
写在最后
结合“函数助手”或者“CVS数据文件”的方式,我们同样可以模拟实现不同的用户,发送不同的请求参数。有关于JMeter的内容到这就告一段落了,后续如果还有其它的补充,我会及时的更新上去。