久趣下载站

当前位置: 首页 » 游戏攻略 » 如何实现性能测试中的并发需求

如何实现性能测试中的并发需求


在性能测试过程中,经常会遇到一些需求,比如每秒并发20次,持续60秒,通过负载测试来评估系统的稳定性。今天我们来探讨一下如何实现这种性能测试场景。

这种场景可以通过两种方法实现:

一、通过控制总线程数和Ramp-Up来控制并发,让线程逐渐增加压力。由于只有一个接口,执行速度会比较快。

我们将线程数设置为20*60=1200,Ramp-Up设置为60,循环次数为1。

这样设置后,查看聚合报告,结果符合需求,但无法确保每秒都会有20次并发,因为这种情况具有一定的随机性。

可以发现事务每秒的数量呈现波动,因此可以结合第二种方法选择适合的方式。

二、第二种方法需要使用到Constant Throughput Timer(常数吞吐量定时器)。

首先将线程组设置为20,循环次数为60,以实现每秒并发20次,持续60秒的结果。

接下来就要使用Constant Throughput Timer(常数吞吐量定时器),我们将目标吞吐量(每分钟的样本量)设置为20*60=1200,注意这里的单位是分钟。

针对计算吞吐量,我们如何选择呢?在这种情况下,我们选择了所有活动线程,但在不同情况下可以选择不同的用法。


只有此线程(This thread only)


  • 解释:选择此选项时,吞吐量目标仅针对当前设置了定时器的线程。这意味着设置的目标吞吐量将完全由这个线程来实现。


  • 用法:如果要单独测试某个线程的性能,并确保其达到特定的吞吐量目标,可以选择此选项。例如,如果有一个线程负责处理特定的业务逻辑,并希望它能够达到每秒10个请求(RPS)的吞吐量,可以在该线程上添加Constant Throughput Timer并设置目标吞吐量为600(因为一分钟有60秒,所以10 RPS = 600 RPS/分钟)。


所有活动线程(All active threads)


  • 解释:此选项将吞吐量目标分配到当前所有活动的线程上。这意味着所有当前正在运行的线程都将共同分担实现总吞吐量目标的责任。


  • 用法:如果有一个包含多个线程的测试计划,并且希望所有线程共同工作以达到某个总的吞吐量目标,可以选择此选项。但需要注意的是,由于线程的执行可能不是完全同步的,因此每个线程实际达到的吞吐量可能会有所不同。


当前线程组中的所有活动线程(All active threads in current thread group)


  • 解释:此选项与“所有活动线程”类似,但它仅针对当前线程组中的线程。如果在一个测试计划中有多个线程组,此选项将确保只有当前线程组中的线程参与实现吞吐量目标。


  • 用法:如果要隔离并测试某个线程组的性能,可以选择此选项。这样,可以确保只有该线程组中的线程被考虑在内,而不会受到其他线程组的影响。


所有活动线程(共享)(All active threads (shared))


  • 解释:此选项类似于“所有活动线程”,但具有一个额外的特性:每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。这有助于确保所有线程都能够均匀地分担吞吐量目标的责任。


  • 用法:如果要确保所有线程都能够以相对均匀的方式分担吞吐量目标的责任,可以选择此选项。这有助于避免某些线程过于繁忙而其他线程则相对空闲的情况。

归纳:

  • 单独测试:如果要单独测试某个线程或线程组的性能,可以选择“只有此线程”或“当前线程组中的所有活动线程”。
  • 协同测试:如果要多个线程或线程组共同工作以达到某个总的吞吐量目标,可以选择“所有活动线程”或“所有活动线程(共享)”。

最后,我们来看一下执行的聚合报告和TPS图。相对于第一种方法,每秒的事务数更加稳定,可以更精确地控制系统的稳定性,确保每秒的并发控制在20次左右。

猜你喜欢
本类排行