JMeter Websocket 二进制Binary压力测试或接口测试

背景

最近在做游戏项目,做好java服务端,需要本地调试Websock服务,并且是二进制binary形式传输,网上的很多都是text形式传输的测试页面,所以不符合要求。为了解决websocket的二进制传输,并实现websocket通信机制的心跳问题,所以写了一个做法。

目的

  1. Jmeter与java后端websocket服务建立连接
  2. 因为websocket机制,有定时检测连接是否存储,所以需要Jmeter定时维护连接存在,不然超过心跳时间会断开连接。
  3. 建立连接后,二进制传输

操作

1. 下载Jmeter

https://jmeter.apache.org/download_jmeter.cgi
上官网,找最新的版本,找到zip格式的压缩文件,便于在windows下解压。
解压后,找到bin目录下的jmeter.bat文件,则会启动Jmeter

2. 更改语言

点击菜单栏-option-language-Chinese,则能显示中文


1.png

3. 下载Jmeter的Websocket插件

https://bitbucket.org/pjtr/jmeter-websocket-samplers/src
下载后,放到jmeter目录的lib\ext下,并重启jmeter

如:
D:\Program Files\apache-jmeter-5.2.1\lib\ext\

4. 建立线程组

1.png

我这里是自测,所以用了一次循环


2.png

5. 建立 websocket写入 样例

对着 线程组右键-》添加-》取样器-》 websocket simple write sample

5.1 创建连接

填写ip 、端口、连接的path。

说明一下而这个只是对服务端创建连接,并不是真正的通信传输数据用。websocket都是创建连接后,后续才真正的传输通信,如:聊天室建立房间后续再通信。

3.png

5.2 创建 察看结果树

用于看每次通信是否有成功连接。
对着样例右键-》添加-》监听器-》察看结果树

6. 创建真正通信用的websocket写样例

同样在一个线程组下,创建websocket写样例。但是这个时候不需要填写ip和端口,只需要选择已存在的一个连接就行。


4.png

6.1 填写与传输二进制

这个地方就比较麻烦,不能直接填json什么的,只能把对象写好,然后转换为byte数组,再转为16进制的数字放进jmeter。


5.png

我这两个类呢,是个protobuf软件proto.exe生成出来的类来的,里面有转换为toByteArray方法,得到二进制数组后,再写个工具把刚刚的数组转换为16进制,就得出结果。


6.png

执行后,打印出来后,得到这个数字就可以放进jmeter的参数栏。参数类型,记得选binary


到这里基本上就完成了。为了压测时,我们需要对websocket后端进行心跳维护。

7. 最后弄弄定时心跳

对着线程组右键-》添加-》逻辑控制器-》runningtime控制器


7.png

填好这个定时任务存活时间

7.1 创建心跳传输内容

如同第6点 那样,创建websocket写样例,传输二进制数据。

7.2 创建固定定时器

填写这个定时器,每多少秒执行一次。


8.png

本文到这里就结束了。本次讲解的是websocket的开发自测,可能对于大部分java开发来讲都用不上,只有游戏的同学会使用websocket,搞游戏、聊天室、websocket等项目的同学打个call吧。


欢迎关注公众号,文章更快一步

我的公众号 :地藏思维

掘金:地藏Kelvin

简书:地藏Kelvin

我的Gitee: 地藏Kelvin https://gitee.com/kelvin-cai

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-WebSo...
    敢梦敢当阅读 12,878评论 0 50
  • 什么是WebSocket呢? WebSocket是HTML5新增的一种通信协议,目标主流的浏览器都支持这个协议,比...
    JunChow520阅读 12,098评论 1 5
  • Socket并非是一个协议,而是为了方便使用TCP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。换句话...
    JunChow520阅读 8,691评论 0 4
  • 很多场景下的应用对数据实时更新要求很高。比如股票交易,数字资产交易,还有一些需要动态更新数据的大屏数据可视化应用等...
    前端进阶体验阅读 5,098评论 0 4
  • # MEMORY NETWORK导读 ## 出发点常见的机器学习模型都缺少一种简单的方法来存储长程记忆,其潜在含义...
    AndyTy阅读 1,397评论 0 1