Jmeter Suite压测工具详细使用说明

2020-12-08 13:20:38 浏览数 (1)

文章https://cloud.tencent.com/developer/article/1753788 已经简述了Jmeter Suite的操作过程,为了更为详细地介绍操作过程,尽可能做到看文章就会用工具,特此写了一篇详细说明。

压测机器购买

Jmeter Suite是一套分布式的压测服务,需要有1台或者多台机器组成的K8S集群进行部署。所以在部署压测服务之前,请先自行购买机器。

1、购买机器步骤(以腾讯云为例)

进入腾讯云“容器服务”进入腾讯云“容器服务”
切换到“集群”的Tab,点击“新建”,新建集群切换到“集群”的Tab,点击“新建”,新建集群
根据需要购买集群和配置,详细配置可参照下下一节,其他默认即可根据需要购买集群和配置,详细配置可参照下下一节,其他默认即可
另外需要注意的是,机器的安全组记得要把局域网都放通,以免出现节点之前访问不了的情况另外需要注意的是,机器的安全组记得要把局域网都放通,以免出现节点之前访问不了的情况

2、机器配置建议

根据Jmeter性能的研究,得出如下的机器配置建议。在上一步购买机器的时候,可以根据你的预期QPS值,购买相应的机器即可。

Server节点配置建议

QPS

节点数

CPU(核)

内存(GB)

网络入带宽(Mbps)

网络出带宽(Mbps)

IO写(KB/s)Max/min

机器资源

1800

等于机器数量

1

每增加一节点增加2GB

大于25~60,视乎请求体和请求返回体大小决定。应时刻关注带宽是否够用,不够的时候扩容(或者按3Kbps每QPS)

一般不需要特别配置(CBS默认已有150MB/s的写入速度)

Master节点配置建议

QPS

节点数

CPU(核)

内存(GB)

网络入带宽(Mbps)

网络出带宽(Mbps)

IO写(KB/s)Max/min

机器资源

/

1

server总CPU核数的1/3

每增加一节点增加1GB

无要求,设置最低即可

一般不需要特别配置(CBS默认已有150MB/s的写入速度)

比如,如果我们需要压测一个目标QPS为5000的业务,按照上面的推荐配置,我们需要如下配置的机器:

Server节点按照每核能够支撑1800QPS来算,目标5000 QPS,则需要3个核的CPU资源,而因为3核心还是比较少的,所以节点数只需要1。按照节点数为1来算,内存需要2GB。Master按照1核1GB内存算即可。

CPU(核)

内存(GB)

网络入带宽(Mbps)

网络出带宽(Mbps)

IO写(KB/s)Max/min

server

3

2

15(达到瓶颈后扩容)

默认

master

1

1

0

默认

总资源要求

4

3

15

默认

如果觉得上面的推算都太复杂,那么只需要对CPU进行估算即可,即“目标QPS/1800”确定CPU核数,留下50%的冗余,选择相应机型即可。

压测工具安装

压测工具安装可以参考文章:https://cloud.tencent.com/developer/article/1753788

部署方式1:Helm3部署

安装Helm3(不能用Helm2)

代码语言:javascript复制
wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
tar -zxvf helm-v3.2.1-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/

Checkout代码

代码语言:javascript复制
git clone https://github.com/tkestack/charts.git

部署压测集群

代码语言:javascript复制
helm install test-name incubator/jmeter-suite

部署方式2:TKE市场部署

如果觉得使用Helm部署还是太麻烦的话,你也可以直接在TKE市场直接点部署

发起测试

Checkout代码,打开jmeter-suite目录

代码语言:javascript复制
git clone https://github.com/tkestack/charts.git
cd jmeter-suite

启动一次测试

代码语言:javascript复制
sh start_test.sh demo/Test.jmx

脚本编写

参考文章:https://docs.qq.com/doc/DTFlMZmZsYk1PVlB1

1、加入后置监听器写入结果

Jmeter脚本的编写,可以参考这里https://github.com/tkestack/charts/jmeter-suite/demo/Test.jmx 这里的Jmeter脚本即可。但是有一点值得注意的是,为了便于分析结果,需要把数据写入influx,所以需要在Jmeter脚本里面添加后置监听器

2、断言如何写

为了对结果进行判断,我们一般会加入断言。但是断言如何写,很大程度上会影响施压机的性能,所以可以根据自己的需要写断言。

(1)断言写法1:对body进行判断

对body进行判断,可以对结果进行比较复杂的处理,但是缺点是性能消耗较大

BeanShell可以对结果进行比较丰富和复杂的判断,适合于结果返回较为复杂的情况BeanShell可以对结果进行比较丰富和复杂的判断,适合于结果返回较为复杂的情况

(2)断言写法2:对返回代码进行判断

对返回代码进行判断,可以节省大量的性能,但缺点是不能输出更多的东西

查看结果

如果想查看测试结果,先找到你的机器IP地址

代码语言:javascript复制
kubectl get node -o wide | grep $(kubectl get pod -o wide | grep grafana | awk '{print $7}') | awk '{print $7}'

然后访问下面地址即可(注意开放入站安全组)

代码语言:javascript复制
http://机器IP:31221

结果分析

参考文章:https://docs.qq.com/doc/DTE9LZUtxa0xaSktH

0 人点赞