摘要
本文章介绍压力测试相关指标,以及相关业内判定标准,以及工具JMeter的使用.以便记录本人在工作学习中遇到的问题所需的关键概念以及思路记录
1.前置知识
1.1 概念解释(做什么的)
压力测试 :可以帮助我们发现系统中瓶颈问题,减少发布到生产环境后出问题的几率。预估系统的承载能力。
1.2 性能指标(如何判断好与坏)
1、响应时间 2、吞吐量(TPS)3、并发量 4、CPU 5、GC
-
响应时间:从服务器角度触发,服务器接收请求到给出响应。
-
行业标准:
-
互联网:500毫秒以下,例如淘宝业务10毫秒左右
-
金融:1秒以下为佳,部分复杂3秒以下
-
保险企业:3秒以下
-
制造业:5秒以下
-
时间窗口:不同数据量结果是不一样,大数据量情况下,2小时完成。
-
-
-
TPS:单位时间内处理请求数量,越大表示性能越好。对于单用户的系统,响应时间可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。
-
行业标准:
-
金融行业:1000TPS~50000TPS,不包括互联网化的活动
-
保险行业:100TPS~100000TPS,不包括互联网化的活动
-
制造行业:10TPS~5000TPS
-
互联网电子商务:10000TPS~1000000TPS
-
互联网中型网站:1000TPS~50000TPS
-
互联网小型网站: 500TPS~10000TPS
-
-
-
CPU:中央处理器,主要功能是解释计算机指令以及处理计算机软件中数据
-
行业标准:
-
CPU 利用率要低于业界警戒值范围之内,即小于或者等于 75%;
-
CPU (系统态)sys% 小于或者等于 30%;
-
CPU (等待态)wait% 小于或者等于 5%;
-
-
-
GC:垃圾回收器,用于回收一些没有用的对象,管理好内存的使用
-
行业标准:
-
Full GC 尽量不要频繁
-
需要合理用好新老生代的空间位置.尽量不要突然对象大小保障,跨越中间的位置,使原本的设计结构不能发挥功效
-
-
2.测试思路(获取对应性能极限)
压力测试思路
上述已经知道,一般需要关注的哪些性能指标来判断服务器是否合格。下面是关于上述指标的验证思路
一般测试5MIN 时长以上,
-
最大TPS
不断的增加并发数(压力),加到TPS达到一定值开始出现下降,或者观察 TPS 以及 响应时间(RT),若TPS不递增,而响应时间递增,那么那个值就是最大的TPS
-
最大吞吐量
Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
-
最大并发数
最大的并发数和最大的TPS是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
3.工具介绍
了解指标以及基本知识,之后剩下就是工具问题,工具有很千万种,本次选择使用了JMeter作为入门例子.
官网下载:http://jmeter.apache.org/download_jmeter.cgi
配置JAVA_HOME,若是开发人员一般都已经配置好的,没有的可以去百度看一下.如何配置
到下载文件所在目录下,进入bin,然后双击jmeter.bat
启动程序
JMeter:
测试计划构建
1.构建线程组
规定在多少时间内产生多少个并发用户请求,以及循环多少次(如下图即1秒内产生500个并发用户访问)
2.配置请求默认值
其实可以直接在某一个请求填写,若使用默认值填写的话,后面的请求可以不用重复填写
3.构建具体需要测试的请求
3.1 做一个特殊小案例补充
本人在测试的时候,需要模拟不同的请求参数.在JMETER中可以使用随机函数,选中以下图标(位于界面右上角),选中__random
生成对应字符串后,可以直接复制黏贴到对应参数值上.
4.断言 判断返回结果是否符合目标预期.
5.结果树 用于测试,其实可以直接在这里运行,然后查看运行效果,返回绿色盾牌的结果,不一定是符合预期,只是表明这个请求是有正常响应,但是在一般接口测试当中,需要根据接口文档去看返回的结果是否符合预期
参考网址
一文搞懂性能测试常见指标: https://testerhome.com/topics/21178
JMETER 性能测试基础:https://www.cnblogs.com/louiezhou/p/13895015.html
性能测试学习总结 :http://www.uml.org.cn/test/202106111.asp
使用JMETER: https://www.cnblogs.com/stulzq/p/8971531.html
TO_DO_LIST:
准备出JCONSOLE 以及JVISUALVM 关于内存以及内存泄漏的文章
https://www.jianshu.com/p/48db4a29300f