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

jmeter压测实战

phpmianshi8个月前 (01-21)运维648

下载安装


下载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下utf-8 BOM的检查和删除

背景当源程序是gbk格式,你转换为 utf8 的时候,很多情况是头部会出现bom,当是php 程序时候,这样会出现很多意想不到的事情,那怎么办呢,你可以用linux 命令来查找,然后对文件的bom 进...

linux中如何排查负载过高的问题

概况Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。如何判断系统是否已经Over Loadw、uptime、top 等命令都可以...

记一次laravel项目因opcache导致的include过慢问题

问题表现 php-fpm-slow.log 大量如下日志:script_filename = /data/nginx/webroot/app-20200611-160330-feb...

linux中配置sudo赋予普通用户对某些命令的执行权限

背景有时我们需要给普通用户,某个命令的执行权限,但是又不想让这个普通用户能执行更多的其他命令,这时候我们可以配置sudo,设置只能执行某几个命令即可配置vim /etc/sudoers #...

nginx面试中最常见的18道题

1、请解释一下什么是Nginx?Nginx---Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以其高性能...

通俗易懂解释IP段192.168.1.0/24和192.168.0.0/16

192.168.1.0/24 包含哪些IPIP地址格式采用“斜线记法”,即:IP地址/网络前缀。例如 192.168.1.0/24 表示32位的二进制地址中(任何IP的二进制地址都...

发表评论

访客

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