关于做性能测试时Jmeter使用的一些小细节
大家在做简单的性能测试时,都会想到使用jmeter来做,我就来给大家讲一下我在用jmeter做性能测试时的一些小细节
1.关于启动和不停顿开始–2个按键的区别
启动和不停顿开始按键
我们知道在做性能时,都会用到同步定时器来生成集合点,这时候,我们会准备足够多的数量线程数来模拟用户数,在设置线程组的属性的时候,需要给一定的时间去准备线程。
/*
100线程,ramp-up time:5s,那么就是5秒准备好100线程,即是20线程/s;
100线程,ramp-up time:10s,那么就是10秒准备好100线程,即是10线程/s;
*/ 题外补充 线程数足够大时,ramp-up设置多久,对负载机有性能的影响。
启动按键:脚本设置好后,按启动按键启动,将会严格按设置的运行,在指定的ramp-up时间内准备线程;
不停顿开始:按不停顿开始按键执行脚本,不会按照设置好的运行,开始后准备好的线程数直接发起请求。不停顿开始会让集合点失效
大家可以在实测时候尝试一下这2个的区别,并能正确的使用。
2.多层同步定时器的效果
如图所示
在性能测试中,如果需要进行业务复杂的场景测试而设置多个集合点(同步定时器)
那么我们可以说说他们作用域和优先级
集合点A:直接是作用域整个测试计划的
集合点B:只作用在登录线程组里
这时候我们再想一下以下的假设
假如‘集合点A’设置集合为3,登陆的’集合点B’设置集合点为5,开始运行后,是怎么并发?
由此可以看出,当有多个集合点时,最外层的集合点优先处理,同时,多个线程组并不会按顺序生产线程。
3.jmeter分布式部署
jmeter分布式,分为控制机和执行机
首先,都是要在其bin目录下的jmeter.properties文件配置参数
remote_hosts=10.173.201.92:1099,10.173.201.189:1099 IP+端口号,控制机通过remote连接上执行机
server_port=1099,端口号(几台机器的端口号可以一样,因为ip不同)
由于jmeter的版本问题,在3.x版本之后,需要修改其他的参数才能正常使用
server.rmi.port=1099
server.rmi.localport=1099
server.rmi.ssl.disable=true
upgrade_properties=/bin/upgrade.properties
修改完成后,控制机和执行机都需要打开jmeter-server.bat,如果打不开则是jmeter的环境配置问题
然后控制机打开jmeter图形界面,打开执行脚本,菜单–运行–远程/远程全部,可以查看到哪些机器已经连接上了的
远程执行后,控制机的图形界面是不会出现执行状态的,但是监听器有返回的数据
在执行jmeter-server.bat的命令窗口可以看到脚本开始执行和结束的信息
如果A框出现的不是执行机的ip,那么就是因为执行机的其他网卡影响,需要把其他网卡禁用后,再次启动jmeter-server.bat。
关于分布式执行时,脚本设置的线程数和集合点数有要求
假设要求1000线程,100集合点的执行,分布式脚本中设置的线程数应到为1000/执行机数,集合点也同样是100/执行机数
如5台执行机,每台都执行线程200,5台总共200X5=1000,集合点20,20X5=100集合点,所以控制机执行的脚本中设置线程为200,集合点设置为20