我有一项任务是在应用程序上加载测试,每秒需要响应2350个用户。为此,我在Jmeter中为我们设置了这样的东西:
我添加了一个Thread组。在那我设置: 线程数(用户):2350 加速期:1秒 循环次数:1
它能解决我用2350用户加载应用程序测试的目的吗?
答案 0 :(得分:1)
会的。但只有每个虚拟用户的响应时间等于1秒。
有两种常见的加载模式,为了实现这两种模式,您需要Timers
实际上,你可能不需要2350个线程来模拟2350个用户,因为现实生活中的用户不会不停地锤击服务器,他们需要一些时间来考虑请求。除了页面加载时间也需要考虑。
假设您有2350个用户。每个用户每15秒执行一次操作。页面加载时间为5秒。因此每个用户每分钟可以打3次服务器。因此,2350个用户将在分钟内产生7050个请求,仅代表每秒117.5个请求。如果您正在寻找此信息,请考虑添加Constant Timer或Uniform Random Timer
如果您需要每秒模拟2350个请求,而不是用户,则需要以不同的方式处理它。有2个定时器用于设置精确的“吞吐量” - 每个时间单位的多个请求。他们是:
Throughput Shaping Timer - 恒定吞吐量计时器的高级版本,可通过JMeter Plugins项目获得。
请记住,上面的计时器只能暂停线程,如果你没有提供足够的线程组级别,它们就不会启动新的虚拟用户,所以要确保你至少有这么多你尝试模拟,或者最好在你的虚拟口袋中增加2倍以防万一。另请查看JMeter tuning tips from 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure,因为JMeter默认配置不是可用于创建此类负载的内容。
答案 1 :(得分:0)
您描述的设置只创建了2350个并行用户(2350个单独的连接),但并不保证每个线程将在1秒内完成。加速期 - 所有线程开始发送请求的速度。因此,在您描述的情况下,Jmeter将执行以下操作:
对于在连续一段时间内需要特定吞吐量的实际场景,最好使用恒定吞吐量计时器。它控制线程发送的请求数量,并在需要满足您定义的值时更改请求之间的延迟。因此,您的实际吞吐量并不真正取决于线程(用户)的总量。有时候,用户可以更快地发送请求(取决于您的应用程序)。
要在运行时控制吞吐量,只需将摘要报告添加到测试计划中即可。
此外,对于这种特定情况(2350个用户),在1秒内生成如此多的请求可能很困难。在这种情况下,您需要使用分布式负载和一些Jmeter从站和1个主站。