前言因为工作需要,一直在有道云笔记里找压力测试相关的内容好久了。打开后发现还不错,回顾过往整理出来分享给大家。顺便说一句,我工作8年多了,有道云笔记不知不觉已经超过6G了。一眼望去,云烟缭绕,还能找到Struts。这是非常感人的。我很好奇你的云笔记是什么样子的。看。也就是说,如果我一直这样记着,总有一天我会成为IT界的司马迁,哈哈?为什么JMeter还记得工作之初压力测试根本不是话题,那时候的框架比较复杂,跟现在的SpringBoot用法完全不一样。在那种环境下,除了大公司,压力测试自然不是项目考虑范围的优先考虑。但时代变了,互联网井喷时代,信息爆炸式输出,大数据和云时代相继到来,测试岗位的重要性逐渐凸显,相应的压力测试和性能测试也成为项目中不可避免的一部分。如果一个Java程序员在向高级工程师迈进的时候一定要掌握SpringBoot、SpringCloud、MQ、k8S等主流技能,还需要什么辅助技能,我可以很负责任的说,压力测试一定是未来的拦路虎。一扇门前。为什么这么说?首先,并不是所有的公司都有一定的规模,有自己的测试团队,或者测试人员都具备压力测试能力。相反,有相当多的中小企业不具备这些基本条件,但同时又具备了一定的规模。不要惊讶,这在人脉纵横交错的中国是很常见的事情。我多年的工作经验告诉我,绝大多数程序员主要活跃在中小型工厂,包括初级和中级工程师,以及高级工程师,他们从大厂沉没到中小型工厂,因为很多原因。之所以下行压力加大,是因为我大胆判断,未来的软件公司会变得碎片化,更小、更精简的公司团队会承担更大、更特殊的项目任务。这种现象在未来几年会逐渐出现。那么,对于生活在这种团队中的程序员来说,如果以后想成为高级工程师,压力测试是必备的技能之一。只有经过测试阶段的反复压测和优化,最终投入生产环境才会更加安全可靠,这样的团队才会更加得到客户单位的认可。这就是为什么我发表了一篇关于JMeter压力测试的文章。试用了几个工具,还是觉得JMeter更实用,压测结果更靠谱。JMeter的使用和安装其实很简单。为了方便演示,我直接安装在Windows上。后面生产环境的使用会讲到linux下的安装。官网相关地址如下。1)、官网:http://jmeter.apache.org/2)、下载地址:http://jmeter.apache.org/down...3)、用户手册:http://jmeter.apache.org/user...1、安装1)、下载2)、解压解压,双击bin目录下的jmeter.bat打开,界面如下。2、使用1)、添加线程组测试计划右键-添加-Threads(Users)-线程组线程组配置见图中红色文字说明2)、HTTP请求默认值线程组右键-添加-配置element-HTTPrequestdefaultvalue,设置一个默认路径,然后就不用每处都重写了。3)添加HTTP请求线程组,右键-添加-Sampler-HTTP请求,新建请求URL和压力测试参数。这里的参数是变量,变量名对应后面的配置文件,写成${XXX}的形式。目的是模拟多个用户发送这个请求,即多个用户和多个token写入cookies,如:userId1,userToken1userId2,userToken2userId3,userToken3设置请求路径和变量如图4),模拟这里有多个用户请求需要用到变量,右键线程组-添加-配置元素-CSV数据集配置。配置文件如下,自己设置一个id和token,在浏览器上用F12找一个。或者使用程序生成数百或数千个用户标识和令牌来模拟多用户访问。5)查看压测结果执行压测后,需要查看相关结果,右键线程组-添加-监听-聚合报告,有很多表格,图表等,一般看下汇总报告。聚合报表如图,其中Throughput属性是指吞吐量,前面的Samples是请求量。意思:10000个请求的吞吐量在300-400之间,可以理解为只支持几百个并发(容易理解专业点一般不说这个),很低,需要性能优化.生产环境使用1.安装1)、上传apache-jmeter-3.3.zip到linux服务器;2)、unzipxx.zip解压;3)、如果找不到unzip命令,执行yuminstall-yunzipzip即可安装。2、新建压测文件1)、新建压测文件:如user_list.jmx,设置线程组线程数为5000,循环次数为10,即执行50000次;2)、将此文件上传到Linux服务器3)新建压力测试文件jmx的具体方法可以参考前面的说明。3、执行压测1)、在同级目录下,执行命令:./apache-jmeter-3.3/bin/jmeter.sh-n-tuser_list.jmx-lresult.jtl2)、启动jmeter进行压测test,pressure测试结果的输出是result.jtl文件。4、观察现象在执行过程中,可以另外打开一个窗口,执行top命令,查看服务器的负载情况。(主要看红框,后面过程中java相关,会发现负载变的很大,CPU占用率也很高。)5.导出结果1),下载result.jtl到本地环境,然后在jmeter中的聚合报告中,浏览打开就可以看到结果;2)可以发现吞吐量不理想。linux服务器配置低的时候报错高,说明应用受不了,直接挂了。6、压测建议1)压测不能一次判断。一般第一次只是热身,以第二次、第三次试压为准;2)不要在工作时间或高峰时段进行压力测试。非常危险的行为,最好的时间一定是测试阶段,少数特殊情况只能在生产环境中测试,也必须选择凌晨等安全时间段;3)、根据压测结果,在性能优化后,可以像上面一样再次做压测,然后导出聚合报告进行对比,直到达到想要的结果。综上所述,压力测试本身并不难,压力测试的工具和方法也有很多。比如redis有自己的压力测试工具redis-benchmark,ApacheBenchmark简称ab,是Apache自己的压力测试工具。这些用法非常简单。
压力测试是高级工程师的必备技能之一,尤其是核心业务接口的压力测试非常普遍。正式项目需要在测试阶段进行压力测试。如果公司有测试团队当然更好,但是如果你的目标是成为一名高级java工程师,你可能不知道压力测试的技巧,但也不能一无所知。正如我在分享开始时所说的,这是我8年多工作学习中记录在云笔记中的内容之一。其实业余时间整理的东西还有很多。有兴趣的朋友可以下载看看。当你需要它的时候,打开它可能会节省很多时间。链接:https://pan.baidu.com/doc/sha...提取码:bxaa本人原创文章纯手写,重点分享主流技术和实际工作经验。如果觉得有一点帮助,请点赞评论收藏一下吧!
