所以我的要求声明系统应该能够在1小时内处理10000个请求。所以这意味着我应该运行一个测试,看看它能够以多快的速度处理10k个请求(而不是用户)。我从来没有做过这样的事情,因为我的需求远远落后于笨拙的用户。有人可以告诉我使用什么线程组以及如何设置它来执行此特定任务。最后的结局不是要达到10k的优秀用户,而是要运行10k个请求,看看他们能够多快完成。
答案 0 :(得分:0)
一小时内10 000个请求类似于每分钟166.6个请求或每秒2.7个请求。
您可以使用Constant Throughput Timer或Throughput 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)