前言
因为工作须要,久违的从本人的有道云笔记中去寻找压测相干的内容,打开之后发现还不错,温故一遍后顺便整理出来分享给大家。<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 分享客栈】