• 一文2500字手把手教你使用jmeter进行分布式压力测试【保姆级教程】


    如果你做测试时间长了,一定会遇到性能测试问题,并且一定会是分布式的,要问为什么,你一定懂,就是单机能力太有限了,而性能测试的负载又是一个非常大的数据,所以分布式是一个必然的选择。
    不管你选Loadrunner还是Jmeter攻击进行性能测试,你都躲不开分布式,下面就来看下在Jmeter中如何搭建分布式的环境吧。

    目录

    一、为何要分布式测试

    二、分布式测试原理

    三、分布式环境搭建

    1、基础环境条件

    2、主机配置

    3、肉鸡配置

    4、运行分布式脚本

    四、注意事项

    学习资源分享


    一、为何要分布式测试

    相信用过jmeter的小伙伴都知道,jmeter是100%纯java开发的程序,虚拟用户是以线程实现的,在大量并发情况下,很容易出现CPU、内存消耗过大的问题,甚至会出现java内存溢出。

    一般一台电脑设置500~600线程数即可,如果超过1000线程,单机电脑就有点过高了,同时也还要关注本机电脑CPU、内存不能超过80%~90%的范围,否则会导致测试机本身的性能瓶颈,测试结果也会不准确。

    二、分布式测试原理

    • 总控机器的节点Jmeter controller,其他产生压力的机器叫“肉鸡”(Jmeter server)
    • controller会把脚本发送到Jmeter server上
    • 执行的时候,server上只需要把jmeter-server打开就可以了,不用启动jmeter
    • 执行结束后,server会把压测数据回传给controller,然后controller汇总输出报告
    • 注意:必须保证主机和肉鸡安装相同的jdk和jmeter

    三、分布式环境搭建

    1、基础环境条件

    主机和肉鸡上都部署相同版本的JDK,并配置环境变量,肉鸡要求配置JMETER_HOME和环境变量path(主机只用path即可)。

    主机和肉鸡上都复制解压相同版本的Jmeter。

    2、主机配置

    Step01:配置主机Jmeter的配置文件

    • 在Jmeter的bin目录下jmeter.properties文件中配置肉鸡IP和Port。
    • remote_hosts=10.9.44.249:1099,10.9.44.246:1099(多台slave之前用","隔开,我这配置了2台)
    • server_port=1099(可自定义,和肉鸡要一致)
    • server.rmi.ssl.disable=true

    Step02:启动jmeter GUI,设计一个性能测试脚本

    3、肉鸡配置

    Step01:配置肉鸡Jmeter的配置文件

    • 在Jmeter的bin目录下jmeter.properties文件中配置。
    • remote_hosts=127.0.0.1:1099(肉鸡不用配置该参数)
    • server_port=1099(可自定义,和肉鸡要一致)
    • server.rmi.ssl.disable=true

    step02:启动肉鸡服务

    启动所有肉鸡jmeter安装目录下的bin目录下的jmeter-server.bat这个文件,目的是让主机能够监听到。但需要注意查看电脑网络连接中的虚拟网络是否禁用了,否则jmeter会出现IP使用错误(错误很可能是获取到了虚拟IP)。

    4、运行分布式脚本

    step01:主控机器调用肉鸡

    所有肉鸡都检查OK了,返回到主控机器电脑,在Jmeter GUI 的“运行”菜单下,选择“远程启动所有”即可。

    也可以通过命令行启动远程肉鸡,并执行脚本。

    1. C:\Users\chang>jmeter -n -t e:\data\jmeter2104\ds.jmx -l e:\data\jmeter2104\result\xx.jtl -R 169.168.1.117
    2. Creating summariser <summary>
    3. Created the tree successfully using e:\data\jmeter2104\ds.jmx
    4. Configuring remote engine: 169.254.126.208
    5. Starting remote engines
    6. Starting the test @ Sun Feb 13 14:37:27 CST 2022 (1644734247414)
    7. Remote engines have been started
    8. Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
    9. summary = 10 in 00:00:01 = 10.0/s Avg: 18 Min: 13 Max: 43 Err: 10 (100.00%)
    10. Tidying up remote @ Sun Feb 13 14:37:29 CST 2022 (1644734249740)
    11. ... end of run

    step02:检查肉鸡运行状态

    在肉鸡端,如果能监听到运行命令,并开始执行脚本,则环境配置正确。

    step03:查看主机运行结果

    肉鸡运行脚本完成后,数据将返回到主控机器进行图表展示。

    四、注意事项

    • 防火墙应该关闭,保证肉鸡和主机、肉鸡和被测系统之间能正常访问
    • 所有客户端应该都在同一个子网中,可以是同一局域网即可。
    • 确保jmeter可以访问服务器,脚本中IP一定是具体的地址,不能是localhost
    • 确保各个jmeter,java版本一致,不同版本可能会存在协同问题
    • 肉鸡上尽量不要安装虚拟机,或者虚拟禁用掉。

    • 如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的
    • 建议单独用一台机器作为mater,以保证所有负载机的数据一致性。
    • 如果设置的线程数为500、迭代1次,如果有4台肉鸡,结果为2000次运行
    • 如果设置线程数为500、迭代次数为-1(或者勾选永远),启动并设置调度时间为1200s(20分钟),则会按照调度时间去运行,次数不定(会因每次迭代时间不同而变化)。


    学习资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

    这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

  • 相关阅读:
    MySQL之导入导出&视图&索引&执行计划
    【Codeforces】 CF1864H Asterism Stream
    【Python基础入门4】关于变量
    python开发工程师面试准备
    SPPNet:金字塔网络
    浅析v-model语法糖的实现原理与细节知识及如何让你开发的组件支持v-model
    【Vue脚手架项目的结构】
    rpt层构建以及实现,220626,hm
    程序设计中遇到的程序不通、逻辑不顺等问题
    修改ctags让fzf.vim插件显示C,C++方法声明的标签
  • 原文地址:https://blog.csdn.net/jiangjunsss/article/details/125521491