首页 > 运维 > jmeter压测实战
2021
01-21

jmeter压测实战

下载安装


下载JDK  : https://download.oracle.com/otn-pub/java/jdk/15.0.2+7/0d1cfde4252546c6931946de8db48ee2/jdk-15.0.2_windows-x64_bin.exe?AuthParam=1611197417_61c2592982272667dcf142a95ef6d58a

或者 Sun公司的官网[https://www.oracle.com/] 下载


安装JDK,,一路next即可


设置环境变量

JAVA_HOME  

C:\Program Files\Java\jdk-15.0.2


CLASSPATH

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

PATH新增2个

%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin


打开cmd,执行 java测试是否安装成功




下载jmeter : https://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.zip


安装,一路next即可


实战演练

打开jmeter.bat , 我们来写一个简单的单一http接口压测脚本,并将传参参数化


1、打开jmeter并创建一个线程组   Add => Threads(Users) => Thread Group


图片.png


2、给线程组添加http请求  Add => Sampler => HTTP Request

图片.png

3、红色图片处两个参数我们进行了参数化,那么我们需要创建CSV数据文件设置来实现参数化 Add => Config Element => CSV Data Set Config

图片.png

Variable Names (comma-delimited)  :  http请求页面大括号中的内容

Recycle on EOF :  表示 txt文件中的数据取完了,会继续循环再取


jmeter.txt中内容如下:

0;1611200140
1;1611200141
2;1611200142

4、现在我们可以执行http请求了,但是执行后,需要查看传参和返回的情况,所以我们需要添加结果树 Add => Listener => View Results Tree

设置线程组中线程和循环次数都为1,执行一次查看结果


图片.png


5、如果只执行几次请求的话我们可以自己来看是否请求成功,但如果压测时有几万甚至几十万个请求,我们是没办法人工检查结果的,此时我们就用到了断言,我们给这个线程组加相应断言

Add => Assertions => Response Assertion

图片.png

我们看到当请求成功时,返回的数据会有 "status":"success"  这样的一个消息,所以我们把这部分加到响应断言里面


这样,当我们执行压测时,返回数据中没有  "status":"success"  这部分的请求,结果树中就会是红色的×


6、现在可以发请求也可以检查结果了,我们还缺少什么呢?缺少统计,压测过程中的相应时间,吞吐,错误率,这些都是没办法用肉眼看到的,所以我们添加聚合报告来进行统计

Add => Listener => Aggregate Report


我们执行一次10并发两次循环的压测,看聚合报告的结果

图片.png

我们看到99%的请求都在116ms内返回,请求平均耗时54ms,吞吐量31.9/s
吞吐量是什么意思呢,就是每秒完成的事务数,是从发出请求到接收到服务器返回的完整事务,我们这次的结果就是每秒完成31.9个事务。


总结

实际压测过程中还需要监控下cpu、数据库、带宽的使用情况,一般会有监控平台,在监控平台看就可以了。


压测注意事项:
1. 先阅读:https://wiki.swoole.com/wiki/page/62.html
2. 注意各个中间件,默认的Session中间件基于文件,io性能非常差。
3. 压空接口,目的在于对比框架的消耗,对比fpm,快慢都是相对的。
4. 如果代码中有类似sleep的同步阻塞操作,那qps自然不会高。
5. 压测时最好在内网测试,避免网络带宽因素影响结果。


全套软件 (JDK jmeter和测试用例下载)

链接:https://pan.baidu.com/s/1PkQPZl9SDCu4E84DhdQfZA   
提取码:ye19

本文》有 0 条评论

留下一个回复