开放式和近端负载测试工具之间的区别

Sta*_*nly 6 jmeter load-testing performance-testing tsung siege

开放式和近端负载测试有什么区别?
基于线程的负载测试工具属于哪一类?
以下是每个类别中负载测试工具的一些示例?

Ali*_*lik 7

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

这种基于封闭/开放系统分离的分类:

  • 封闭系统模型的情况下,新请求仅由先前请求的完成触发,然后是思考时间.系统有负面反馈,无法掩盖服务,因此用户在提出新请求之前等待响应;
  • 开放系统模型的情况下,新请求独立于完成而到达,例如根据随机过程或固定跟踪.系统没有负面反馈.

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

  • 基于线程的模型,其中每个线程在发送另一个请求之前将等待响应 - 因此请求速率取决于响应速率(负载生成器以系统可以采取的速度驱动负载):
    • 基于线程的方法是面向VU [虚拟用户]的,同时试图模拟N个用户一起工作;
    • 基于线程的工具需要一个单独的线程来模拟用户;
    • 示例:JMeter ;
  • 基于命中的模型
    • 基于命中的方法是RPS [每秒请求数] -当试图产生每秒N次点击负载时;
    • 基于命中的工具使用异步方法,并将始终尝试创建已定义的请求率,必要时排队请求;
    • 例子:tsung,Yandex.Tank.

  • 我将提到另一个开源工具:Gatling允许您以任一方式生成负载 - 开环和闭环 (4认同)
  • 实际上,JMeter 也可以使用 [Throughput Shaping Timer](https://jmeter-plugins.org/wiki/ThroughputShapingTimer) 生成基于命中的负载 (3认同)

Ger*_*cke 6

我基本同意Aliaksandr对封闭/开放系统的解释并给你一个例子.

例如:您有3个用户,每个用户迭代一系列请求.在新迭代开始之前,前一次迭代必须完成.如果所有请求都已完成,则上一次迭代结束.如果被测系统需要更长的响应时间,则请求/速率会下降.因此,负载发电机和被测系统处于闭环状态.

在开环中,无论响应时间如何,请求率都是恒定的 - 没有反馈.

两种模型都揭示了被测系统的不同性能特征,即具有闭环的容量/吞吐量限制,具有开环的队列大小.使用开环使系统过载更容易

关于线程,通常基于线程的工具定义一个闭环,但是,您也可以模拟开环.

以JMeter为例,如果你想在3600秒的时间内保持2个用户/秒的恒定速率,你可以使用3600秒的加速时间并使用7200的线程数,而不需要循环.

Gatling是另一种免费工具,它不是基于线程的,而是基于事件的.您可以建模闭环(重复,期间)或开环(constantUsersPerSecs)