一、Jmeter 安装
在此处下载Jmeter二进制文件,解压进入bin目录,点击 jmeter.bat 。OK,就可以看到下面的界面,当然线程组是不存在的(那是我加的)。
这里有几点说明:
jmeter.bat:运行JMeter(默认在GUI模式下)
jmeterw.cmd:在没有 Windows shell 控制台的情况下运行 JMeter(默认在 GUI 模式下)
jmeter-n.cmd:在其上放置 JMX 文件以运行 CLI 模式测试
jmeter-n-r.cmd:在其上放置 JMX 文件以远程运行 CLI 模式测试
jmeter-t.cmd:将 JMX 文件拖放到此文件上以在 GUI 模式下加载它
jmeter-server.bat:以服务器模式启动 JMeter
mirror-server.cmd:以 CLI 模式运行 JMeter 镜像服务器
shutdown.cmd:运行 Shutdown 客户端以正常停止 CLI 模式实例
stoptest.cmd:运行 Shutdown 客户端以突然停止 CLI 模式实例
特殊名称LAST可以与jmeter-n.cmd、jmeter-t.cmd和jmeter-nr.cmd一起使用 ,表示交互式运行的最后一个测试计划。
1.1 自定义 JMeter 的 JVM 设置
在bin目录中创建一个名为setenv.bat,添加下面的代码:
set JVM_ARGS=-Xms1024m -Xmx1024m -Dpropname=value
JVM_ARGS可用于覆盖jmeter.bat脚本中的 JVM 设置,并将在启动 JMeter 时设置,例如 :
jmeter -t test.jmx …
更多的操作可以参照Jmeter用户手册
二、WebSocket插件安装
Jmeter的 WebSocket插件有很多种,这里我们使用JMeter WebSocket Samplers,可以在这里下载
下载最新的就可以,下载后将JAR包拖到 Jmeter安装目录/lib/ext下即可。
之后重启Jmeter,可以看到下图所示即为安装成功:
三、环境准备
我这里是在Win 11上进行的测试,但不管是在那台机器上,都必须修改服务器的最大连接限制。否则,超过服务器限制的连接数就会报错。
3.1 连接数限制修改
- 首先进入注册表:WIN+R进入运行框,输入:regedit 。
- 修改注册表:
就是这里:进入 [HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
然后添加下面的设置:
最大允许的TCP连接数:TcpNumConnections = 16777214
最大动态端口数 :MaxUserPort = 65534
最大TCB 数量 :MaxFreeTcbs = 16000
最大TCB Hash table 数量 :MaxHashTableSize = 65536
具体操作可以参考:新建 -> QWORD(64位)值(Q)->10进制
四、测试
4.1 脚本构建
我的英文不好,所以我选择中文界面,可以这样设置:
设置完中文看着顺眼多了😁
4.1.1 连接请求
- 将线程组添加到测试计划中。
- 测试计划 -> 添加 -> 线程(用户) -> 线程组
- 将WebSocket Open Connection 采样器添加到线程组
- 检查采样器的所有字段并填写以下值:
- 协议:ws或者wss
- 服务器名称或 IP:服务器所在的IP
- 端口:服务对应的端口
- 路径:对应的路径 可以为空
- 连接超时(毫秒):20000
- 读取超时(毫秒):6000
4.1.2 心跳
- 线程组 -> 添加 -> 取样器 -> WebSocket Ping/Pong
采样器指定以下参数:
Pong(读取)超时(毫秒):6000
4.1.3 WebSocket request-response Sampler
- 线程组 -> 添加 -> 取样器 -> WebSocket request-response Sampler
填写以下值:
- 连接:use existing connection
- 数据类型:Text
- 请求数据:blazemeter
- 响应(读取)超时(毫秒):6000
将 WebSocket 请求-响应采样器添加到线程组。下一个采样器将把二进制数据发送到 Echo 服务。
- 线程组 -> 添加 -> 取样器 -> WebSocket request-response Sampler
- 设置以下字段:
- 连接:use existing connection
- 数据类型:Binary
- 请求数据:0x62 0x6c 0x61 0x7a 0x65 0x6d 0x65 0x74 0x65 0x72
- 响应(读取)超时(毫秒):6000
4.1.4 WebSocket Single Write Sampler
- 线程组 -> 添加 -> 取样器 -> WebSocket Single Write Sampler
- 填写以下值:
- 连接:use existing connection
- 数据类型:Text
- 请求数据:blazemeter-text
- 和前面一样,再添加一个发送二进制消息的
- 线程组 -> 添加 -> 取样器 ->WebSocket Single Write Sampler
- 填写以下值:
- 连接:use existing connection
- 数据类型:Binary
- 请求数据:0x62 0x6c 0x61 0x7a 0x65 0x6d 0x65 0x74 0x65 0x72 0x2d 0x74 0x65 0x78 0x74
4.1.5 WebSocket Single Read Sampler
- 线程组 -> 添加 -> 取样器 -> WebSocket Single Read Sampler
- 设置以下字段:
- 连接:use existing connection
- 数据类型:Text
- 响应(读取)超时:6000
- 线程组 -> 添加 -> 取样器 -> WebSocket Single Read Sampler
- 设置以下字段:
- 连接:use existing connection
- 数据类型:Binary
- 响应(读取)超时:6000
4.1.6 WebSocket Close
- 线程组 -> 添加 -> 取样器 -> WebSocket Close
- 填写以下值:
- 关闭状态:1000
- 响应(读取)超时:6000
4.2 结果查看
- 线程组 -> 添加 -> 监听器 -> View Results Tree
五、结果查询
- 运行脚本
- 查看结果