一线程组有接口A、接口B、接口C,
设置线程数:100, 循环:1000次,
接口A 开始 进行100线程的请求,但是 接口B 请求的时候,可以保证还是 100次 请求同时进行吗? 可以保证服务器 同时处理了接口的100次请求吗?
就像现实生活中的接力赛比赛,第一棒出发的时候是10个人同时出发,到第一棒结尾的时候,还能保证10个人同时到达吗? 到最后一棒的时候,能有两个人同时到达就不错了。
所以每一个接口面临的并发,就会比100 要小,就会变的比较分散一些;
如果说:业务可能对瞬间并发要求比较高,比如要求 某个接口 100并发跑,-怎么保证呢?
集合点。
- 集合点:是为了增加瞬间并发压力的一种机制,在脚本中增加一个标记,所有虚拟用户执行到标记处会进行等待,等所有用户都到达后,再同时继续执行下一步操作;
优点: 对服务器来说,会产生一种瞬间高并发
缺点:对服务器来说,平均压力会降低;
业务场景:抢购、秒杀 这类的,需要加集合点;一般抢购,是以秒为单位的,抢华为手机,5秒就足够了。
其他场景都不需要加,一般加了集合点后,就不使用tps来衡量系统性能(持续时间太短了); 一般关注的就是有多少并发、并且服务器没报错、 并且全部成功了---没超卖,这就说明是ok的
集合点功能要慎重使用,因为加了集合点,系统的平均压力会降低;
比如在接口C,前加一集合点,即所有用户跑到接口C 请求之前,都要进行等待,等待其他用户到位; 那等待的过程中,服务器就很空闲;
所以,抢购这种,看重的是 并发,以及数据的准确性。kk
同步定时器 synchronizing timer: 集合点
模拟用户组的数量:100 (一般跟线程组 的线程 数是保持一致的,希望某接口的瞬间并发更高一些)
超时:在等100人的时候,最多等:多长时间; 比如:5秒,如果等了5秒--5000毫秒,还没等到100人,那就不等了,来了多少都走;
如果不设置超时时间,默认超时时间是0,意思就是永远等待,只要不够100人,就不发车;
等待时间: 一般来说5秒,比较长了。
- jmeter 中多个线程组的关系:
jmeter 中一个线程组 内的多个接口,是按照顺序来跑的;
那一个jmeter 有多个线程组呢,多个线程组之间是完全没关系的。
线程组:一群人,代表一个用户群体,比如开发部、测试部; 大家是相互独立的,谁也不影响谁!
- 固定定时器:设置一个固定的延迟时间--即固定的等待多长时间再去执行。 场景:想要定时去执行某个接口的时候,就可以用上;
接口-右击-添加-定时器--固定定时器, 只一个选项:线程延迟--多长时间;
定时器:放在接口下面,但是 是在接口之前执行的,虽然位置是在接口 之下;
定时器作用域:放在接口下面,仅作用于 某个接口; 放在线程组下面,对线程组内的所有接口 都起作用;
如果希望定时器仅应用于其中一个请求,就把定时器作为子节点加入; ---一般这种情况会多一些;
同一接口下放两个固定定时器,都是2秒,相当于 一个固定定时器:4秒;
做性能的话,一般不用固定定时器; 因为肯定不希望它等待。 做自动化的话,可能用的更多一些;
做性能的话,同步定时器用的更多一些;