开放式和封闭式负载测试工具的区别

11

什么是开放式负载测试和封闭式负载测试之间的区别?
线程为基础的负载测试工具属于哪个类别?
每个类别中一些负载测试工具的例子是什么?


2
我已经做了17年的负载测试,从未听说过“开放式负载测试工具”或“封闭式负载测试工具”这个术语。你能提供一些定义的参考吗? - timbre timbre
术语可能会误导,但概念是存在的,请查看这里:http://users.cms.caltech.edu/~adamw/papers/openvsclosed.pdf - Gerald Mücke
2个回答

14

看来你在谈论 闭合和开放式工作负载模型

这种分类基于闭合/开放系统的划分:

  • 闭合系统模型 中,新的请求仅会在先前请求完成后触发,并伴随着思考时间。系统具有负反馈,使其不可能超负荷服务,因此用户在发出新请求之前会等待响应;
  • 开放系统模型 中,新的请求独立于完成,例如根据随机过程或固定跟踪方式进行。系统没有负反馈。

基于这种分类,我们可以根据所使用的工作负载模型将负载测试工具分为以下类别:

  • 基于线程的模型,其中每个线程在发送另一个请求之前都会等待响应,因此请求速率取决于响应速率(负载发生器尽可能快地推动负载):
    • 基于线程的方法是 VU [虚拟用户] 导向,同时试图模拟 N 个用户共同工作;
    • 基于线程的工具需要单独的线程来模拟用户;
    • 例如:JMeter
  • 基于点击的模型
    • 基于点击的方法是 RPS [每秒请求数] 导向,同时试图产生 N 个点击量的负载;
    • 基于点击的工具使用异步方法,并始终尝试创建定义的请求速率,必要时排队请求;
    • 例如:tsungYandex.Tank

4
我会提到另一个开源工具:Gatling可以让你生成负载,无论是开放式循环还是封闭式循环。 - Slavik
3
JMeter也可以使用“吞吐量整形计时器”(Throughput Shaping Timer)生成基于命中的负载。请参考Throughput Shaping Timer - scormaq

10
我基本同意Aliaksandr对闭合/开放系统的解释,并给出一个例子。
例如:您有3个用户,每个用户都在迭代一系列请求。在新迭代开始之前,必须完成上一次迭代。如果所有请求都已完成,则上一次迭代将结束。如果被测试的系统需要更长时间来响应,则请求速率会降低。因此,负载生成器和被测试系统处于闭环状态。
在开环中,请求速率是恒定的,不考虑响应时间-没有反馈。
两种模型显示了被测试系统的不同性能特征,即闭环的容量/吞吐量限制,开环的队列大小。使用开环更容易过载系统。
关于线程,通常基于线程的工具定义一个闭环,但您也可以对开环进行建模。
以JMeter为例,如果您想在3600秒内保持2个用户/秒的恒定速率,则使用3600秒的逐渐增加时间,并使用7200个线程数,而不循环。
Gatling是另一个免费的工具,它不是基于线程而是基于事件的。您可以模拟闭环(重复,持续)或开环(constantUsersPerSecs)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接