如果我为我的虚拟用户增加思考时间而不是让他们尽可能快地循环执行请求,这会有什么不同?

What difference does it make if I add think time to my virtual users as opposed to letting them execute requests in a loop as fast as they can?

我需要测试一个 Public 网站是否可以服务于定义的每秒 400 个页面加载的峰值。

根据我在网上看到的,在测试网页性能时,虚拟用户(线程)应该配置为在他们访问的每个页面上暂停和“思考”,以便在发送之前模拟真实用户的行为一个新的页面加载请求。

我必须使用一些远程负载生成器机器来生成这个必要的负载,并且我对每个负载生成器可以使用的虚拟用户数量有限制。这意味着如果我让每个虚拟用户在每个页面上暂停并“思考”x 秒,那么与没有配置思考时间的情况下尽可能快地执行相比,该用户不会产生大量负载- 这将导致我需要更多的用户并隐含地需要更多的负载生成器机器来实现我想要的“每秒页面加载”,这最终会更加昂贵。

如果我的唯一要求是证明服务器每秒可以处理 400 个页面加载,我想知道如果我增加思考时间(并因此使用更多虚拟用户),它到底有什么不同。

为什么通常将“思考时间”视为测试网页性能时应该添加的东西?

  1. “空闲”(什么都不做)的虚拟用户占用的资源最少(主要是线程 stack size),所以我认为您不需要更多机器

  2. Well-behaved 负载测试必须以 100% 的准确性代表应用程序的真实使用情况,如果您正在测试网站,每个 JMeter 线程(虚拟用户)必须模拟真实用户使用具有所有相关功能的真实浏览器,例如

    400 个没有思考时间的用户和 4000 个有思考时间的用户之间的区别的最直接的例子是,4000 个用户将打开 4000 个连接并保持打开状态,而 400 个用户将只打开 400 个连接。