做音乐网站首页要求,国网商旅云网站地址,专业网站建设的软件,云霄县建设局网站写在前面
平时在使用Jmeter做压力测试的过程中#xff0c;由于单机的并发能力有限#xff0c;所以常常无法满足压力测试的需求。因此#xff0c;Jmeter还提供了分布式的解决方案。本文是一次利用Jmeter分布式对业务系统登录接口做的压力测试的实践记录。按照惯例#xff0…写在前面
平时在使用Jmeter做压力测试的过程中由于单机的并发能力有限所以常常无法满足压力测试的需求。因此Jmeter还提供了分布式的解决方案。本文是一次利用Jmeter分布式对业务系统登录接口做的压力测试的实践记录。按照惯例在正式开始前先简单介绍一下本文大纲
Jmeter集合点用法Jmeter命令行参数详解Jmeter分布式部署方案Jmeter分布式调度原理Jmeter分布式部署过程Jmeter分布式压测业务系统登录接口实践
一、Jmeter集合点用法
集合点是使用Jmeter进行压力测试中一个绕不开的话题。
集合点通俗地理解就是例如要模拟100个并发用户集合点会将这100个线程集结完毕后统一释放同时对系统进行施压。Jmeter中可以通过同步定时器 Synchronizing Timer 来完成 同步定时器中”模拟用户组的数量“与线程组的线程数量的关系
1.当模拟用户组的数量 线程组的线程数量
例如数量都是5那么运行测试Jmeter会等到5个用户同时准备好后并发发起请求 2.当模拟用户组的数量 线程组的线程数量
① 未设置超时时间
例如模拟用户为5线程数量为8那么在运行Jmeter后Jmeter会先同时发起5个请求剩下3个用户不足集合点的数量5由于又没有设置超时时间因此达不到集合点的数量要求Jmeter就会一直处于等待状态 ② 已设置超时时间
例如模拟用户为5线程数量为8超时时间设置为3000以毫秒为单位即3秒
那么在运行Jmeter后Jmeter会先同时发起5个请求由于剩下3个用户不足集合点要求的数量5因此会超时等待3秒钟在3秒钟后再同时发起剩下的3个用户的请求共8个用户 3.当模拟用户组的数量 线程组的线程数量
① 未设置超时时间
例如模拟用户为8线程数量为5超时时间为0
由于设置的模拟用户数量为8即集合点数量为8而线程组的总用户数只有5因此达不到集合点数量要求且又没有设置超时时间所以Jmeter会一直处于等待状态不会发起任何请求如下图所示 ② 已设置超时时间
例如模拟用户为5线程数量为8超时时间设置为3000以毫秒为单位即3秒
由于设置的模拟用户数量为8即集合点数量为8而线程组的总用户数只有5因此达不到集合点数量要求但是设置了超时时间为3秒所以Jmeter会在3秒后同时发起5个(用户)请求如下图所示 二、Jmeter命令行参数详解
参数作用-n表示在命令行模式下运行 JMeter-t指定脚本文件-R指定从节点(agent)执行测试多个ip用逗号隔开-r表示启动全部agent-f表示每次都会清空前一次的执行结果写入新的结果-l生成测试结果文件默认以 jtl 结尾-e生成测试报告-o指定生成测告的位置必须为空-g指定已存在的jtl结尾的测试文件生成报告
常见用法 ./jmeter.bat -n -t test.jmx # 以命令行方式运行test.jmx脚本./jmeter.bar -n -t test.jmx -l test.jtl # 以命令行方式运行test.jmx脚本并生成测试结果文件test.jtl./jmeter.bar -n -t test.jmx -f -l test.jtl -e -o report # 以命令行方式运行test.jmx脚本每次生成结果前先清空test.jtl同时在report目录下生成测试报告./jmeter.bar -n -t test.jmx -l test.jtl -R 192.168.1.122 # 指定远程主机192.168.1.122执行测试
三、Jmeter分布式部署方案
主机IP地址Master主节点Windows192.168.1.131Slave从节点-1Linux192.168.1.121Slave从节点-2Linux192.168.1.122Slave从节点-3Linux192.168.1.123
注意事项
主节点及各个从节点机器必须提前安装好Java环境主节点及各个从节点的Jmeter版本保持统一master会在发送测试计划时将jmx的脚本文件发送到各个从节点因此脚本文件不用手动上传到各个从节点但是master不会将外部文件一起发送所以在测试中用到的CSV等参数化文件需要把CSV等文件手动上传到各个从节点最好都放置在bin目录下Jmeter会直接从bin目录下开始查找
四、Jmeter分布式调度原理 1.各节点作用
主节点主要负责管理从节点(负载机)、分配调度任务(脚本分发)、收集测试结果从节点执行测试任务模拟并发请求
2.工作流程
① 主节点负责将测试任务、测试脚本下发给各个从节点
② 从节点接收到测试任务后开始驱动各自环境上的Jmeter执行测试任务、模拟并发请求
③ 从节点执行完成后会将测试结果回传给主节点
④ 最后主节点将各个从节点的收集回来的测试结果进行展示
五、Jmeter分布式部署过程
1.主节点部署
① 编辑主节点jmeter.properties配置文件 第268行remote_hosts添加从节点主机地址多个从节点用逗号隔开注意不同版本可能存在差异第272行为主节点端口号如有端口占用可手动修改第345行server.rmi.ssl.disable由false改为true关闭ssl
② 主节点启动jmeter-server服务
Windows环境下直接点击运行Jmeter的bin目录下的jmeter-server.bat即可启动成功会出现如下提示 2.从节点部署
① 将Jmeter压缩包上传到各个从节点并解压
从节点均为Linux环境解压命令为 unzip apache-jmeter.zip
② 修改jmeter.properties配置文件
第345行server.rmi.ssl.disable由false改为true关闭ssl
③ 启动jmeter-server服务 chmod -R x bin # jmeter-server、jmeter文件都需要执行权限可以简单粗暴使用chmod -R参数赋予整个bin目录执行权限 ./jmeter-server # 启动jmeter-server服务
启动成功会出现如下提示 3.测试主节点与从节点的连通性
可以通过Jmeter工具-运行-远程启动选择一个从节点也可以使用命令行-R参数指定一个从节点运行
如下图所示Starting...表示主节点已将任务下发到指定的从节点从节点开始执行测试任务 4.Jmeter分布式部署常见问题及报错解决
1启动远程主机提示“Engine is busy - please try later” 原因本地或者远程负载机未正常关闭
解决杀掉进程重新启动可以观察主节点及从节点的jmeter-server日志如果只有Starting没有Finished那么大概率是这台机器出现了问题
2主节点发起测试后未接收到结果数据
如执行成功后察看结果树无数据主节点及从节点也没有任何报错
原因测试脚本中有参数化远程节点上参数化csv文件跟本地测试中设置的目录不一致或从节点上缺少csv文件 解决将csv文件分别上传一份到各个从节点csv文件最好设置相对路径不要设置绝对路径将csv文件存放在bin目录下
3Jmeter启动从节点运行测试报错“connection refused” 原因从节点未启动jmeter-server服务
解决各个从节点均启动jmeter-server服务
六、Jmeter压测业务系统登录接口实践
最大并发量和我们业务系统负责人交流后得知系统理论上支持6000~7000个左右的用户同时并发登录是没有问题的测试的目标测试出业务系统是否如他提供的数据、支持那么大的用户并发登录实测数据3台负载机每台启动500个线程共1500个用户并发测试结果如下各个负载机模拟的用户均登录正常、无报错被测业务系统所在服务器内存、CPU均无大的波动 升压并发用户数量1500、2100左右系统响应都比较稳定当并发用户量达到每台1000一共3000个用户同时请求时部分用户登录会返回500总体失败率在3%左右预测当并发用户数达到更大规模4000、5000、6000失败的比例还会增大 小结
以上就是利用Jmeter实现分布式压测的一次实践确切的说应该是初探在压力测试过程中CPU和内存的动态变化我并没有做详细的监控后续准备借助JMeterInfluxDBGrafana的监控组合来可视化监控测试过程性能测试是一个庞大的工程和命题性能测试工具仅仅是实现性能测试的技术手段会使用性能测试工具不代表就掌握了性能测试所有使用性能测试工具的目的都只是为了模拟压力的发起在性能测试过程中工具仅仅起到脚本开发、场景实现、测试执行等作用而性能测试还包括需求获取、场景设计、结果分析和调优等诸多环节最终还是要靠人来实现尤其是性能瓶颈分析和调优除了依赖性能测试结果外还需要依赖于人的强大的性能测试功底以及对业务、对系统架构的了解 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走
这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你