前言
因为工作须要,久违的从本人的有道云笔记中去寻找压测相干的内容,打开之后发现还不错,温故一遍后顺便整理出来分享给大家。<br/><br/>
题外话,工作8年多,有道云笔记人不知;鬼不觉都6G多了,扫一眼下来尽是云烟过往,居然还能发现Struts的货色,令人甚为感怀,挺好奇你们的云笔记长什么样子。<br/><br/>
话说,我如果始终这么记下去,有朝一日能成为IT界的司马迁不哈哈?
<br/>
为何JMeter
犹记得当年工作之初,压测基本不成为话题,过后的框架也绝对简单,和当初的SpringBoot用法几乎云泥之别,在那种环境下,除了大公司,压测天然不是我的项目首要思考的领域。<br/><br/>
但时过境迁,互联网井喷时代,信息爆炸式输入,大数据、云时代接踵而至,测试岗位的重要性逐渐凸显,相应的压力测试、性能测试也成为我的项目绕不开的一环。<br/><br/>
如果说一个Java程序员在迈向高级工程师必须要把握支流的技能如SpringBoot、SpringCloud、MQ、k8S等等以外,还须要具备什么辅助技能,我能够很负责任的说,压测肯定是将来挡在背后的一扇门。<br/><br/>
为何这么讲,首先,并非所有的公司都有肯定规模,都有本人的测试团队,或者测试人员都具备压测能力,反而有相当多的中小企业没有这些根底条件,但同时又承接了肯定规模的我的项目,不要意外,这在关系网犬牙交错的国内是很常见的事件。<br/><br/>
我多年工作的经验通知我,绝大部分程序员次要还是沉闷在中小厂,这外面蕴含高级中级工程师,也蕴含因为各种起因从大厂下沉到中小厂的高级工程师,加上疫情造成市场上行压力变大的起因,我大胆判断将来的软件公司会走向碎片化,更小更精简的公司团队会承接更大更非凡的我的项目工作,这种景象会在之后一些年逐渐浮现。<br/><br/>
那么,在这种团队中生存的程序员,如果将来要迈向高级工程师,压测就是必备的技能之一,只有测试阶段进行了重复的压测及优化,最终投入生产环境才会更安全可靠,这样的团队才会更被客户单位所认可。<br/><br/>
这也是我专门出一篇JMeter压测相干文章的起因,尝试了好几个工具,还是感觉JMeter的实用性更强,压测后果也更牢靠。
<br/>
JMeter用法
装置其实挺简略,为了不便演示,我间接Windows上装置了,前面生产环境用法会讲Linux下装置,官网相干地址如下。
<br/>1)、官网:http://jmeter.apache.org/
<br/>
2)、下载:http://jmeter.apache.org/down...
<br/>
3)、用户手册:http://jmeter.apache.org/user...
1、装置
1)、下载
<br/>
2)、解压
解压后在bin目录双击jmeter.bat关上,界面如下。
2、应用
1)、增加线程组
测试计划右键-增加-Threads(Users)-线程组
线程组配置看图片中红字阐明
2)、HTTP申请默认值
线程组右键-增加-配置元件-HTTP申请默认值,设定一个默认的门路,之后就不必每个中央都重写一遍了。
<br/>
3)、增加HTTP申请
线程组右键-增加-Sampler-HTTP申请,新建一个拿来压测的申请URL及参数。
这里参数给的是变量,变量名对应前面的配置文件,用${XXX}这样的模式写入。
目标是,模仿多个用户收回这个申请,即有多个user和多个token写入cookie,如:
userId1,userToken1
userId2,userToken2
userId3,userToken3
设置申请门路及变量如图所示
<br/>
4)、模仿多用户申请
这里须要用到变量,线程组右键-增加-配置元件-CSV Data Set Config。
配置文件如下,本人设定一个id和token,在浏览器上F12查找一个拿来用。
或者应用程序生成几百几千个用户id,token,来模仿多用户拜访。
<br/>
5)、查看压测后果
执行压测后须要查看相干后果,线程组右键-增加-监听器-聚合报告,这里有很多包含表格、图表等等,个别就看聚合报告。
聚合报告如图所示,这里的Throughput属性就是指吞吐量,后面的Samples就是申请量。
含意:10000个申请的吞吐量是300-400之间,能够艰深了解为仅反对几百个并发(不便了解业余点个别不这么讲),很低,须要性能优化。
<br/>
生产环境用法
1、装置
1)、将apache-jmeter-3.3.zip上传到Linux服务器上;
2)、unzip xx.zip进行解压;
3)、如果报了找不到unzip命令,就执行yum install -y unzip zip装置上就能够了。
<br/>
2、新建压测文件
1)、新建一个压测文件:如user_list.jmx,设定线程组中线程数为5000,循环次数为10,示意执行50000次;
2)、将这个文件上传到Linux服务器上;
3)、具体新建压测文件jmx的办法参照后面的解说。
<br/>
3、执行压测
1)、同级目录下,执行命令:
./apache-jmeter-3.3/bin/jmeter.sh -n -t user_list.jmx -l result.jtl2)、启动jmeter进行压测,压测后的后果输入为result.jtl文件。
<br/>
4、观测景象
在执行过程中,能够另开启一个窗口,执行top命令查看服务器接受的负载。(次要看红框这个,以及上面过程中的java相干的,会发现负载变得很大,CPU占用率也很高。)
<br/>
5、导出后果
1)、将result.jtl下载到本地环境,而后在jmeter中的聚合报告那里,浏览关上,看后果;
2)、能够发现吞吐量很不现实,Linux服务器配置较低时,error很高,阐明应用程序难以承受间接挂掉了。
<br/>
6、压测倡议
1)、压测不能依附一次评判,个别第一次只是热身,以第二次第三次压测为准;
2)、不要在工作工夫或运行高峰期工夫进行压测,这是很危险的行为,最佳时期肯定是测试阶段,少部分非凡状况只能在生产环境压测也肯定要抉择平安时段如凌晨;
3)、依据压测后果,进行性能优化后,能够再次像上述一样进行压测,而后导出聚合报告进行比照,直到达到现实后果。
<br/>
总结
其实压测自身不难,压测的工具和形式也很多,比方redis有本人的压测工具redis-benchmark,还有Apache Benchmark简称ab,是Apache自带压测工具,这些用法都很简略。<br/><br/>
压测是迈向高级工程师必会的技能之一,尤其是对外围业务接口的压测非常罕用,正规的我的项目在测试阶段都须要压测,若公司有测试团队当然更好,但以java高级工程师为指标的话,压测技能你能够不会,但绝不能不理解。
<br/>
分享
开篇说了,这是我8年多工作及学习过程中在云笔记中记录的内容之一,其实还有很多我空闲之余都做了下整顿,有感兴趣的敌人能够下载看看,什么时候用到了打开说不定就能节俭很多工夫。
链接: https://pan.baidu.com/doc/sha...
提取码: bxaa
<br/>
自己原创文章纯手打,专一于分享支流技术及理论工作教训,感觉有一滴滴帮忙的话就请点个赞和珍藏吧!
<br/>
更多最新技术文章可关注公众号:【9i分享客栈】