Jmeter-尝试在时间限制内完成线程

时间:2017-11-22 15:49:16

标签: multithreading performance jmeter performance-testing

所以我的要求声明系统应该能够在1小时内处理10000个请求。所以这意味着我应该运行一个测试,看看它能够以多快的速度处理10k个请求(而不是用户)。我从来没有做过这样的事情,因为我的需求远远落后于笨拙的用户。有人可以告诉我使用什么线程组以及如何设置它来执行此特定任务。最后的结局不是要达到10k的优秀用户,而是要运行10k个请求,看看他们能够多快完成。

2 个答案:

答案 0 :(得分:0)

一小时内10 000个请求类似于每分钟166.6个请求或每秒2.7个请求。

您可以使用Constant Throughput TimerThroughput Shaping Timer将JMeter的吞吐量限制为给定的数字,并查看它是否能够在1小时内完成10k请求。

测试运行可能会更短,就像您看到throughput指标超过每秒2.7个请求一样 - 很可能被测系统无法应对负载。

一旦您确信您的系统可以在一小时内处理10k请求,您就可以增加吞吐量以查看它是否/何时/何时中断。

答案 1 :(得分:0)

您需要在3600秒内完成10000次请求。

假设(最后)请求采用最大100秒,您应该使用最大[ramp up] [1] = 3500定义的Thread组执行,而线程数= 10000

  

加速需要足够长以避免在测试开始时过大的工作负载,并且足够短以至于最后一个线程在第一个完成之前开始运行

我建议从Ramp up = 3500开始并减少数量,直到请求开始失败。

  

提升期告诉JMeter需要多长时间才能进入"提升"选择的全部线程数。

另一个选择是使用JMeter插件Concurrency Thread Group

  

配置线程调度的简化方法。它旨在维持并发级别,这意味着如果没有足够的并行运行,则在运行时线程期间启动附加。与标准的线程组不同,它不会预先创建所有线程,因此不会使用额外的内存。它对Stepping Thread Group来说是一个很好的解决方案,因为它允许线程优雅地完成工作。

在您的情况下,不是并发用户一小时:

Target Concurrency = 1 (not concurrent) 

Ramp up Time - 60 (minutes)

Ramp up Steps Count  1

Hold Target Rate Time 60 (minutes)

Thread Iteration Limit 1 (not concurrent)