Jmeter作为一个强大的开源工具,有很多地方值得我们深入学习,今天我们就来看看如何使用Jmeter的定时器,可以模拟一些用户实际操作场景做一些基本的性能压测。篇幅较长,这里说一下常用的几个。
定时器的作用域:
1、在每个取样器之前执行,和定时器放置的位置没有关系;
2、在执行取样器之前,当前作用域内的定时器都会被执行;
3、若将定时器仅应用于指定的取样器中,需要把定时器作为子节点加入
4、若需要设置取样器执行完成后等待,使用test action(测试活动)
定时器的种类及使用:
固定定时器 Constant Timer(常用)
作用:让每个线程在请求之前按照相同的时间间隔停顿,并且不会将等待时间计入取样器的响应时间。
在java请求的取样器情况下,相当于设置间隔时间
添加事务控制器的情况下,相当于模拟真实用户的等待时间
同步定时器Synchronizing Timer(常用)
作用:用于设置线程到一定的数量后,突然释放加压查看服务器性能。类似线程阻塞,默认无超时的情况。
其中,若TimeOut in milliseconds设置为0,则表示定时器会等待线程数到达了设置的标准后才释放线程,若没有到达目标数据会线程死锁。若设置大于0的数值,超过了等待时间后还没有到达目标线程数,定时器不会再等待,直接释放当前的线程。
同步定时器设置要求:
超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)
举例:我设置10个用户线程,也就是请求集合数量10,线程数10,加载时间5毫秒,超时时间>10*100/10/5=500,所以设置超时时间大于500ms
Beanshell定时器(常用)
作用:自定义编写脚本设置线程延迟间隔时间。
这里我设置了第一个线程等待3秒钟
可以从图表和聚合报告中看到,添加的等待时间会加上事务控制器的响应时间上。
此外还有的定时器如图,有时间也会研究下具体: