浅谈性能测试稳定性 Constant Throughput Timer(常数吞吐量定时器)

constant,throughput,timer · 浏览次数 : 0

小编点评

本文将浅谈如何在性能测试过程中实现每秒并发20的需求。为了模拟这种场景,我们可以采用两种方法:控制总线程数和Ramp-Up,以及使用Constant Throughput Timer(常数吞吐量定时器)。 方法一:控制总线程数和Ramp-Up 1. 设置线程数为20 * 60 = 1200,Ramp-Up为60,循环次数为1。 2. 使用聚合报告查看系统稳定性。这种方法可能导致每秒事务数波动较大,但可以大致满足需求。 方法二:使用Constant Throughput Timer(常数吞吐量定时器) 1. 设置目标吞吐量为20 * 60 = 1200,单位为分钟。 2. 选择“所有活动线程”或“所有活动线程(共享)”作为定时器选项。 3. 根据需要选择“只有此线程”或“当前线程组中的所有活动线程”。 通过使用这两种方法,我们可以更精确地控制每秒并发量,从而提高系统稳定性。

正文

在性能测试过程中总会收到一些需求如:单接口每秒并发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 Throughput Timer(常数吞吐量定时器)

在性能测试过程中总会收到一些需求如:单接口每秒并发20,这种并发持续60秒,通过负载测试查看系统稳定性,今天就让我们来浅谈一下这种场景如何去实现性能测试~

浅谈常态化压测 | 京东物流技术团队

随着业务的不断增长,支撑业务系统的压力也逐渐增加,会面临如系统越来越厚重、逻辑越来复杂、迭代节奏越来越快等繁杂的情况。我们当前并没有做到在每次变化时快速识别出性能风险,检测产品或系统的稳定性、可靠性,而且我们还在不断的投入人力成本在压测这件事情上也是不合理的,所以我们要将性能验证融入到我们日常的工作中,把压测做到常态化,做成平常的一件事。

[转帖]PostgreSQL 的性能调优方法

https://juejin.cn/post/7119489847529570334 浅谈PostgreSQL的性能调校 PostgreSQL的性能调校是指调校数据库以提高性能和快速访问数据;我们可以通过调校查询和数据库性能相关的参数来调校PostgreSQL的数据库性能。为了提高性能,我们需要通过

[转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算

介绍 通常在讨论不同RAID保护类型的性能的时候,结论都会是RAID-1提供比较好的读写性能,RAID-5读性能不错,但是写入性能就不如RAID-1,RAID-6保护级别更高,但写性能相对更加差,RAID10是提供最好的性能和数据保护,不过成本最高等等。其实决定这些性能考虑的因素很简单,它就是RAI

浅谈HTTP缓存与CDN缓存的那点事

HTTP缓存与CDN缓存一直是提升web性能的两大利器,合理的缓存配置可以降低带宽成本、减轻服务器压力、提升用户的体验。而不合理的缓存配置会导致资源界面无法及时更新,从而引发一系列的衍生问题。本文将分别将从HTTP缓存与cdn缓存的规则、流程、配置入手,能让大家了解基础概念的同时,可对自己的项目配置

[转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算_文字版

https://www.cnblogs.com/IvanChen/p/4491984.html 介绍 通常在讨论不同RAID保护类型的性能的时候,结论都会是RAID-1提供比较好的读写性能,RAID-5读性能不错,但是写入性能就不如RAID-1,RAID-6保护级别更高,但写性能相对更加差,RAID

[转帖]浅谈redis采用不同内存分配器tcmalloc和jemalloc

http://www.kaotop.com/it/173669.html 我们知道Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。所以系统内存分配器的性能及碎片率会对Redis造成一些性能上的影响。 在Redis的 zmalloc.c 源码中,我们可以看到如下代码: ?

MySQL性能优化浅析及线上案例

关于数据库的性能优化其实是一个很复杂的大课题,很难通过一篇帖子讲的很全面和深刻,这也就是为什么我的标题是‘浅析’,程序员的成长一定是要付出代价和成本,因为只有真的在一线切身体会到当时的紧张和压力,对于一件事情才能印象深刻,但反之也不能太过于强调代价,如果可以通过一些别人的分享就可以规避一些自己业务的问题和错误的代价也是好的。

万字长文浅析配置对MySQL服务器的影响

有很多的服务器选项会影响这MySQL服务器的性能,比如内存中临时表的大小、排序缓冲区等。有些针对特定存储引擎(如InnoDB)的选项,也会对查询优化很有用。

线程池核心原理浅析

由于系统资源是有限的,为了降低资源消耗,提高系统的性能和稳定性,引入了线程池对线程进行统一的管理和监控,本文将详细讲解线程池的使用、原理。