11

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

4

2 回答 2

12

看起来您在谈论封闭式与开放式工作负载模型

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

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

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

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

我基本上同意 Aliaksandr 对封闭/开放系统的解释,并举个例子。

例如:您有 3 个用户,每个用户都迭代一系列请求。在新的迭代可以开始之前,前一个迭代必须完成。如果所有请求都已完成,则先前的迭代完成。如果被测系统需要更长的时间来响应,则请求/秒速率会下降。因此负载生成器和被测系统处于闭环中。

在开环中,请求率是恒定的,与响应时间无关 - 没有反馈。

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

关于线程,通常基于线程的工具定义一个闭环,但是,您也可以对开环进行建模。

以 JMeter 为例,如果您希望在 3600 秒的时间内保持 2 个用户/秒的恒定速率,则使用 3600 秒的加速时间并使用 7200 的线程数,而无需循环。

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

于 2016-09-20T14:14:08.527 回答