网站首页 > 精选教程 正文
最近公司要求要压测几个主要的借口,并且要输出最终的压测报告,因为压测报告要给甲方爸爸们看,让他们相信我们的服务是杠杠的,嘿嘿~。其实甲方爸爸们主要是想看服务器参数以及接口的负载能力(tps),于是我就压测了几个接口,发现了一些问题,针对有问题的接口做了一些优化。
其实做一下压测是挺好的,可以发现很多测试环境不会出现的问题,比如可能缓存没命中,直接穿透到db等等。压测出来的结果,看到单机(4核8G)tps低于1000的,我们都进行了优化,tps怎么也要超过1000吧。因为一直都是使用jmeter来做压测,下面我们就来简单说一下jmeter压测的流程和一些注意事项。
一、压测流程。
- 在windows下面通过gui打开jmeter,创建测试计划以及压测脚本test.jmx,注意,动态配置的参数,可以使用变量来控制,以方面在linux下用命令行进行压测的时候,动态修改参数,如下图:
2.把test.jmx脚本文件放到linux服务器,使用以下命令进行压测(压测不建议使用gui模式运行,gui模式会占用一定的系统资源)。
jmeter -n -t test.jmx -J threadNum=10 -J threadCount=2 -l result.jtl
-n表示以no gui模式运行;
-t指定脚本文件,这里是 test.jmx
-J选项传递动态参数,对应创建jmx脚本的时候设置的相关参数
-l是指定结果监听器(比如聚合报告之类的)文件,这里是result.jtl
3.压测过程中输出的大概如下,可参考图中的备注理解每个字段的意思:
4.压测结果如果要生成html形式的报告,使用以下命令可以将result.jtl文件生成html的形式。
jmeter -g result.jtl -o ./html
-g指定生成结果文件,这里是result.jtl;
-o指定生成的html结果文件目录,注意是目录,这里是html目录,最终生成的html相关文件会放到html目录下面;
如果result.jtl比较大的话,转换的过程可能有点慢,要等一下。生成的html要传到window端,用浏览器打开即可。
生成的html相关文件
5.生成的result.jtl,可以传到windows本地,使用jmeter查看相关的结果,使用jmeter新建一个测试计划,然后在该测试计划下面创建对应的监听器之后,点击监听器右边的浏览按钮,选中result.jtl,打开就可以看到对应的result.jtl的结果,大概如下图:
图中的Thoughput就是tps
下面对聚合报告中的字段进行解读:
Label:请求的名称,就是我们在进行测试的httprequest sampler的名称
Samples:总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次;
Average:默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间 ,单位是毫秒
Median: 50%用户的请求的响应时间,中位数
90%Line:90%的请求的响应时间
95%Line:95%的请求的响应时间
99%Line:99%的请求的响应时间
Min:最小的响应时间
Max:最大的响应时间
Error%:错误率=错误的请求的数量/请求的总数
Throughput: 默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
Received KB/sec: 每秒从服务器端接收到的数据量,即:收到的千字节每秒的吞吐量测试
Sent KB/sec: 每秒从客户端发出的的数据量,即:发送的千字节每秒的吞吐量测试
ps.
1.jmeter在linux下的安装和配置教程,这里就不赘述了,网上很多教程
2.jmeter压测脚本的编写,网上也很多教程~
二、注意事项:
1.有时候压测机(运行jmeter的机器)也会成为瓶颈,比如通过https进行压测的时候,压测机的cpu就直接100%了,如果是http的话就没问题,https是多了证书的加解密验证过程,挺耗cpu的。这时候可以通过几台机进行压测,jmeter原生支持分布式进行压测。
2.尽量使用no gui的模式进行压测,同时压测机(运行jmeter的机器)要和接口服务器分开,jmeter进行压测的时候,也是很耗资源的。
3.测试之后,如果某些接口tps很低,可以通过jprofile,jstack,jvisualVM之类的工具进行调优,接口response body很大的,可以考虑压缩之后再返回(比如tomcat,undertow等容器内部自带压缩机制)。
参考:
https://www.cnblogs.com/ailiailan/archive/2019/09/17/11519976.html
欢迎关注微信公众号“ismallboy”,并在公众号下面回复"jmeter”,获得本文最新内容和更好的阅读体验。
猜你喜欢
- 2025-03-24 通过压测表格分析并发量、RT、QPS量化公式
- 2025-03-24 高并发性能工具详解(4大主流性能工具)
- 2025-03-24 技术要求太高?这个开源的全链路压测系统你值得拥有
- 2025-03-24 服务压测发现怪异现象,一顿排查,揪出“TIME_WAIT”这个内鬼
- 2025-03-24 Jmeter自定义变量模拟多用户压测(jmeter多场景压测)
- 2025-03-24 压力测试-JMeter安装、入门、结果分析
- 2025-03-24 阿里性能专家全方位对比Jmeter和Locust,到底谁更香?
- 2025-03-24 使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践
- 2025-03-24 性能测试利器-Locust框架解析(常用测试框架)
- 2025-03-24 发现一款后端程序员必备的压测工具,十分钟就能上手,yyds
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)