当前位置:首页 > 运维 > 正文内容

jmeter压测实战

phpmianshi5个月前 (01-21)运维360

下载安装


下载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

版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

linux中如何查看系统io使用情况

linux中查看IO的方法主要有下面几种方法:1. top   %wa    的含义是等待输入输出的CPU时间百分比,这个数字越高说明越多的CPU资源...

linux中利用nethogs查看哪些进程占用网络带宽

centos6版本安装1、安装依赖包yum install ncurses* -y yum install libpcap* -y2、下载...

linux中多文件按行拼接整合命令paste

概念Linux下的paste命令主要用于从多个文件(包括标准输入)中读取内容,将每个文件的对应行用指定分隔符(默认tab制表符)拼接起来并打印到标准输出,我们可以使用重定向命令“>”将输出结果保...

负载均衡工作模式以及工作原理

负载均衡的多种解决方案:HTTP重定向当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,实际上就是页面重定向。通过...

快速删除复制代码中的行号

有时我们copy的代码中前面有行号,一个一个删除太麻烦可以用下面三种方式删除行号:1.awk操作 awk '{for(i=2;i<=NF;i++)printf(&qu...

linux中高并发场景下too many open files问题处理

概述:高并发场景下 too many open files 问题。可以通过设置系统打开文件数,直接影响单个进程容纳的客户端连接数。比如会影响到长链接应用如聊天中单个进程能够维持的用户连接数, 运行ul...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。