浅谈性能测试稳定性 Constant Throughput Timer(常数吞吐量定时器)
在性能测试过程中总会收到一些需求如:单接口每秒并发20,这种并发持续60秒,通过负载测试查看系统稳定性,今天就让我们来浅谈一下这种场景如何去实现性能测试~
这种场景可以用两种方法去实现:
一、我们通过控制总线程数和Ramp-Up来控制并发,让它的线程慢慢增压,因为只有一个接口,所以执行时是偏快的
我们把线程数设置为20*60=1200,Ramp-Up设置为60,循环次数为1

这样设置我们来看下聚合报告,也是符合我们的需求,但没有那么准确的确保每秒都并发20,这种概率偏随机

可以发现它的Transactions per Second图中的事务数是这种忽高忽低,所以可以和第二种放发一起选择,选择适合的方法

二、第二种就要用到这篇文章的主角了Constant Throughput Timer(常数吞吐量定时器)
首先将线程组设置为20,循环次数60大道每秒并发20持续60秒的结果

其次就用到Constant Throughput Timer(常数吞吐量定时器)了,我们设置目标吞吐量(每分钟的样本量)为20*60=1200,注意这里的单位是分钟

那基于计算吞吐量怎么选择呢?在这种情况里我们选择了所有活动线程,但不同种情况可以选择不同的用法

只有此线程(This thread only)
解释:当选择这个选项时,吞吐量目标仅针对当前设置了定时器的线程。这意味着设置的目标吞吐量(Target Throughput)将完全由这个线程来实现。
用法:如果你想要单独测试某个线程的性能,并确保其达到特定的吞吐量目标,可以选择这个选项。例如,如果你有一个线程负责处理特定的业务逻辑,并希望它能够达到每秒10个请求(RPS)的吞吐量,你可以在该线程上添加Constant Throughput Timer并设置Target Throughput为600(因为一分钟有60秒,所以10 RPS = 600 RPS/分钟)。
所有活动线程(All active threads)
解释:这个选项将吞吐量目标分配到当前所有活动的线程上。这意味着所有当前正在运行的线程都将共同分担实现总吞吐量目标的责任。
用法:如果你有一个包含多个线程的测试计划,并且希望所有线程共同工作以达到某个总的吞吐量目标,可以选择这个选项。但是,需要注意的是,由于线程的执行可能不是完全同步的,因此每个线程实际达到的吞吐量可能会有所不同。
当前线程组中的所有活动线程(All active threads in current thread group)
解释:这个选项与“所有活动线程”类似,但它仅针对当前线程组中的线程。如果你在一个测试计划中有多个线程组,这个选项将确保只有当前线程组中的线程参与实现吞吐量目标。
用法:如果你想要隔离并测试某个线程组的性能,可以选择这个选项。这样,你可以确保只有该线程组中的线程被考虑在内,而不会受到其他线程组的影响。
所有活动线程(共享)(All active threads (shared))
解释:这个选项类似于“所有活动线程”,但它具有一个额外的特性:每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。这有助于确保所有线程都能够均匀地分担吞吐量目标的责任。
用法:如果你想要确保所有线程都能够以相对均匀的方式分担吞吐量目标的责任,可以选择这个选项。这有助于避免某些线程过于繁忙而其他线程则相对空闲的情况。
归纳:
- 单独测试:如果你想要单独测试某个线程或线程组的性能,可以选择“只有此线程”或“当前线程组中的所有活动线程”。
- 协同测试:如果你想要多个线程或线程组共同工作以达到某个总的吞吐量目标,可以选择“所有活动线程”或“所有活动线程(共享)”。
最后我们看下执行的集合报告和TPS图,相对于第一种方法每秒的事务数更加稳定,可以精确的将每秒的并发控制在20来控制系统的稳定性了~


浅谈性能测试稳定性 Constant Throughput Timer(常数吞吐量定时器)的更多相关文章
- constant timer(固定定时器),constant throughput timer(常数吞吐量定时器);多个请求,某个请求a下,设置常数吞吐量定时器,模式:all active threads(shared)则所有请求吞吐量一致;
1.两请求之间添加'固定定时器' 1000ms,那么两请求发送间隔时间是多少? 1000ms吗? 由实验得出,2个请求发送间隔时间 = 1000ms + 第一个请求时间(发出至完成后时间) 2.单个请 ...
- JMETER 定时器 之 常数吞吐量定时器
定时器: 默认情况下,Jmeter线程在发送请求之间没有间歇.建议为线程组添加某种定时器,以便设定请求之间应该隔多长时间.如果测试人员不设定这种延迟,Jmeter可能会在短时间内产生大量访问请求,导致 ...
- Jmeter之Constant Timer与constant throughput timer的区别(转)
当放置Constant Timer于两个http请求之间,那么它代表的含义是:在上一个请求发出至完成后, 开始Contant Timer指定的时间,最后再发出第二个请求.它并不是代表两个请求之间的发送 ...
- Jmeter之Constant Timer与constant throughput timer的区别
当放置Constant Timer于两个http请求之间,那么它代表的含义是:在上一个请求发出至完成后, 开始Contant Timer指定的时间,最后再发出第二个请求.它并不是代表两个请求之间的发送 ...
- Jmeter Constant Throughput Timer 使用
Jmeter提供了一个非常有用的定时器,称为Constant Throughput Timer (常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量. 右键点击fnng.cnblo ...
- Jmeter固定吞吐量控制器Constant Throughput Timer
控制请求的TPS,可以使用JMETER的固定吞吐量控制器Constant Throughput Timer Target throughput(in samples per minute):目标吞吐量 ...
- jmeter-并发及常数吞吐量定时器设定
- Jmeter定时器:Precise Throughput Timer使用
百度上这方面资料很少,google上有一些,我试着总结一下. Precise Throughput Timer 是Jmeter4.0添加的新功能,直接摘录一段英文: The Precise Throu ...
- [原创]浅谈H5页面性能测试
[原创]浅谈H5页面性能测试 H5页面我想各位都不陌生,随着移动互联网兴起,不管是App,还是H5都火起来了,最突出的2个表现是ios/android/前端等工程师薪水大涨,尤其是资深前端工程师40W ...
- 浅谈如何提高自动化测试的稳定性和可维护性 (pytest&allure)
装饰器与出错重试机制 谈到稳定性,不得不说的就是“出错重试”机制了,在自动化测试中,由于环境一般都是测试环境,经常会有各种各种的抽风情况影响测试结果,这样就为测试的稳定性带来了挑战,毕竟谁也不想自己的 ...
随机推荐
- Java的Stream流的分页,Stream的skip和limit实现分页
1.工具类 package com.cc.testproject.utils; import com.github.pagehelper.PageInfo; import org.springfram ...
- SQL Server 数据库分析操作程序时SQL语句等待或执行时间较长(死锁)
大型程序,总会遇到程序操作端卡顿或者直接遇到死锁,死锁是数据库设计的缺陷,虽不能完全避免死锁的出现,但一旦出现死锁我们要进行及时分析死锁语句,找出原因,进行SQL语句或程序的优化,避免再次出现同样的问 ...
- 在tomcat上安装PFX格式证书部署https
您可以在Tomcat服务器安装已签发的SSL证书,实现通过HTTPS安全访问Web服务.本文介绍如何在Tomcat服务器安装PFX格式的SSL证书. 步骤一:在阿里云的域名管理后台,下载SSL证书 登 ...
- UE4 C++调用C# DLL(DllExport方法)
之前看见园子里一篇C++调用C#的文章,参考后拿UE试一下.刚开始尝试了C# dll > CLR C++ DLL > Native C++ DLL的做法, 原生环境下是可以的,但是到UE4 ...
- C语言:++ --优先级的深入理解
#include <stdio.h> int main() { int num = 11; int result = ++num > 11 && --num < ...
- 4G EPS 中的各种唯一标识
目录 文章目录 目录 电信运营商的唯一标识:PLMN.MCC 与 MNC 移动用户的唯一标识:IMSI.MSIN 与 MSISDN/MDN 移动用户的唯一临时标识:TMSI.GUTI 与 GUMMEI ...
- 一套完整的中小级别的企业级监控prometheus
一 相信有很多博客都已经详细的说明了prometheus的作用以及相关的作用以及原理,这里不在赘述,仅仅从部署和配置2个方面来记录一下,为公司产品组搭建的prometheus告警平台的过程以及踩过 ...
- 阿里巴巴 MySQL 数据库之 SQL 语句规约 (三)
SQL 语句规约 强制部分 [强制] 不要使用 count(列名) 或 count(常量) 来替代 count(*),count(*) 是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NU ...
- WPF使用事件聚合器,实现任意页面跨页通信
前言:最近几天有好几个小伙伴玩WPF,遇到不同页面,不知道要怎么传递消息.于是,我今天就来演示一个事件聚合器的玩法,采用prism框架来实现.作为福利,内容附带了主页面打开对话框时候直接通过参数传递消 ...
- 记一次 .NET某质量检测中心系统 崩溃分析
一:背景 1. 讲故事 这些天有点意思,遇到的几个程序故障都是和Windows操作系统或者第三方组件有关系,真的有点无语,今天就带给大家一例 IIS 相关的与大家分享,这是一家国企的.NET程序,出现 ...