【问题标题】:Difference between open-ended and close-ended load testing tools开放式和封闭式负载测试工具的区别
【发布时间】:2016-09-05 21:18:59
【问题描述】:

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

【问题讨论】:

  • 我做负载测试已经 17 年了,我从来没有听说过“开放式负载测试工具”或“封闭式负载测试工具”这个词。你能参考一些定义吗?
  • 这些术语可能具有误导性,但概念是存在的,请看这里:users.cms.caltech.edu/~adamw/papers/openvsclosed.pdf

标签: jmeter performance-testing load-testing tsung siege


【解决方案1】:

您似乎在谈论 closed vs. open workload models

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

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

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

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

【讨论】:

  • 我会提到另一个开源工具:Gatling 可以让您以任何方式生成负载 - 开环和闭环
  • 其实JMeter也可以生成基于命中的负载,使用Throughput Shaping Timer
【解决方案2】:

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 2013-04-15
    • 2014-02-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多