jmeter分布式压测与no-GUi模式压测
发布时间:2025-05-22 02:01:44 发布人:远客网络
一、jmeter分布式压测与no-GUi模式压测
选择一台机器作为调度机(master),其他的机器作为测试执行的执行机(slave),由Contorller通过命令行将测试脚本发给slave,然后slave执行测试,同时将测试结果发送给master。
按照一般的压力机配置,jmeter的GUI模式下,最多支持300左右的模拟请求线程,再大的话,容易造成卡顿、无响应等情况,这是限于jmeter其本身的机制和硬件配置。有时候为了尽量模拟业务场景,需要模拟大量的并发请求,这个时候单台压力机就无法满足需求。针对这种情况,jmeter的解决方案是支持分布式压测,即将大量的模拟并发分配给多台压力机,来满足这种大流量的并发请求场景。
master配置(本次使用window系统)
jmeter.properties文件中:修改 remote_host=xxx.xxx.xx.xxx:xxx --(slave的IP端口号,多个slave地址用“,”隔开);修改server.rmi.ssl.disable= true。
jmeter.properties文件中:新增 server.rmi.localport=1099
1)slave启动./jmeter-server 运行成功显示-- Created remote object: UnicastServerRef2 [liveRef: [endpoint:[x x x x x](local),objID:[xxxxxxxxxxx]]]
2) master启动jmeter.bat,在run中选择Remote Start中对应的slave地址运行
3)连接接成功,在slave中显示-- Starting the test on host x x x x x@ Wed Nov 13 22:33:50 CST 2019
4)观察slave中bin目录下的jmeter-server.log查看日志;观察master中添加的聚合报告,看是否slave在运行,且将测试结果发送到master上
5)运行结束,slave显示-- Finished the test on host x x x x x x x x@ Thu Nov 14 23:21:22 CST 2019
1)slave一直停留在Starting the test on host x x x x x@ Wed Nov 13 22:33:50 CST 2019;观察jmeter-server.log日志显示拒绝链接,导致超时(java.rmi.ConnectException: Connection refused to host: xxx.xxx; nested exception is:java.net.ConnectException: Operation timed out.... )
1)检查slave是否打开了防火墙,打开的话就将其关闭
2)master是否有安装虚拟机,虚拟机的网络设置成了“Bridge并勾选 Replicate physical network IP address所以在controller机器的网络路由设置中,显示的网络连接为:VirtualBox Host-Oly Network;去网络和internet设置--》更改适配器选项将其禁用
3)master是否为双网卡,在我的电脑--〉属性-->设备管理器-->网络适配器中,将出下图以外的都禁用掉(本地网卡一般以Realtek PCIe GBE开头;无线网卡中间带有Wireles PCI字样)--(本次是用这个方法解决上面的问题)
二、简单介绍在no-gui模式下运行的命令
jmeter-n-t/usr/local/xxx.jmx-l xxx.jtl
-n的意思是没有图形化界面运行
-l的意思是运行结果保存哪个文件里面
如果是将脚本文件直接存储在bin目录下面则直接运行命令:jmeter-n-t xxx.jmx-l xxx.jtl
二、Jmeter性能压测 —— 高并发思路
测试场景:模拟双11,百万级的订单量进行物流信息查询接口的性能测试。
目标:接口响应时间需控制在150毫秒以内,实现每秒10万并发量。
①设定并发量为10万次每秒,由架构师和技术负责人提供。
②使用20台配置为4G内存、4核处理器的机器。
①多数公司无法在测试环境达到与生产环境相同配置。通过基准测试,使用少量请求进行性能测试,推导出生产环境的性能指标。
②假设1台配置相同的机器能完成5000/s并发量的性能指标,通过理论推导得知,只需要1台与服务器相同配置的机器即可完成5000/s并发量,类似数学中的同理可得。
确保性能测试项目部署的服务器硬件型号与生产环境一致。
①生产环境并发量为100000,服务器20台,平均到每台服务器5000/s。当并发需求达到5000/s时,需确保并发量大于等于5000/s才能承受。
吞吐量(接受发送):≥5000/S(查询数据场景:一秒内处理查询请求数量;多个操作/设计数据修改的请求)
并发量:5000/s(相对并发:某一个时间段;绝对并发:同一个时间)
响应时间:接口请求从开始到结束完整时间-- 150ms
性能测试用例--执行步骤+执行结果验证
不断加大并发--直到系统不满足性能需求【性能瓶颈】【拐点】
压力测试(稳定性测试)--极限并发情况下,系统能否稳定指定时间(一般压力测试时间大于12小时)
测试顺序:先做压力测试再做负载测试,以便确定极限并发并进行负载测试。
模拟总共500线程-->慢慢增加--最终达到
只压500线程而不是5000线程的原因是,接口平均访问返回时间为100ms,1秒就有1个线程可以造成10并发的压力。因此,只需要500个用户,1秒就能达到5000并发的压力。
① Stepping Thread Group,梯度压测,每次递增可以在Next,add中自定义参数。
② Jmeter压测实时仪表盘在后端监听器中。Grafana(未深入研究,待接口框架完成后再继续完善)
③性能测试仪表盘的好处是具有集群监测功能,可以进行linux集群监控。
最后,感谢每一位认真阅读文章的读者,关注、转发、点赞等互动方式在此省略。更多技术交流、资源共享请参考技术交流群。群内提供免费资料,涵盖软件测试面试题库,包含基础理论、功能测试、网络、数据库等多方面内容。希望对大家有所帮助!
三、jmeter做压测,模拟1000用户,怎么设置能达到1000并发
1、用参数化,实现1000个不同的用户名、密码登录系统参数化:Thread Group的Add->Config Element->CSV Data Set Config添加
2、以下是CSV Data Set Config各个参数的简要说明:FileName:即同目录下csv文件的名称。File Encoding:默认为ANSI。Varible Names:定义文本文件中的参数名,参数之间逗号分隔.定义后可在脚本在以Shell变量的同样的方式引用,Allow Quoated data:双引号相关。
3Recycle on EOF:设置为True后,允许循环取值。Stop Thread on EOF:当Recycle on EOF为false并且Stop Thread on EOF为true,则读完csv文件中的记录后,停止运行,Sharing Mode:设置是否线程共享。再外层设置1000用户 0s内同时并发。