【问题标题】:JMeter throughput drops when hitting Amazon ELB击中 Amazon ELB 时 JMeter 吞吐量下降
【发布时间】:2013-10-26 17:13:27
【问题描述】:

我在 Amazon 的 AWS 服务器上托管一个 Web 应用程序。我目前正在使用 JMeter 对应用程序进行负载测试。我的主要问题似乎是,当我通过弹性负载均衡器 (ELB) 访问 Amazon 服务器而不是直接访问服务器时 - 我的吞吐量似乎达到了上限。

如果我直接点击我的 Web 应用程序 - 对于每台服务器,我能够实现每台服务器 50 RPS 的吞吐量。

如果我通过 Amazon 的 ELB 访问我的 Web 应用程序 - 我只能实现 50 RPS(总计)的最大吞吐量

我想知道是否有人在通过 Amazon 的 ELB 使用 Jmeter 进行负载测试时遇到过类似的行为。

关于更多上下文,我的 Web 应用程序是一个 REST 应用程序,它允许用户通过 HTTP 请求下载内容(约 150 kb)。

我正在运行带有以下标志“-Dsun.net.inetaddr.ttl=0”的 Jmeter,并使用 10 个线程运行它。我已经尝试在不同机器上使用多个客户端运行这些测试。

提前感谢您的帮助。

【问题讨论】:

    标签: rest jmeter amazon-elb


    【解决方案1】:

    负载平衡器可能很难测试,因为它们可能具有不同的流量编排机制,具体取决于来源。最常用的方法来区分请求的来源并将其重定向到同一主机,该主机服务于先前的请求是 cookie。您可以查看HTTP Cookie Manager 以正确操作您的cookie,并确保每个测试线程或线程组都有不同的cookie(取决于您的用例)。另一个不稳定的区域是源主机 IP。您可能需要将每个测试线程绑定到不同的 IP 地址,以便访问负载均衡器后面的不同服务器。关于 Amazon LB,DNS 也可能存在一些问题。关于how to test Amazon ELBs 的有用指南

    【讨论】:

      【解决方案2】:

      最可能的原因是 jmeter 的 DNS 缓存。 ELB 根据自动缩放的设置方式返回附加服务器的 IP,但 JMeter 不使用这些附加服务器。这个问题可以通过保证Jmeter不缓存DNS结果来解决……

      ELB 是一个名称,而不是 IP,并且可能会受到 DNS 缓存的影响。确保在启动 JMeter 时使用“-Dsun.net.inetaddr.ttl=0”

      http://wiki.apache.org/jmeter/JMeterAndAmazon

      【讨论】:

        【解决方案3】:

        一个非常晚的回复,与原始问题略有不同,但我希望这可以帮助其他人,因为我花了一段时间才弄清楚。我最初的问题不是 ELB 导致吞吐量降低,而是引入了 HTTP 503 错误。实际上,与直接查询 Web 应用程序相比,ELB 提高了我的吞吐量,尽管即使进行了 1 小时的测试,至少可以说结果是零星的。

        首先,ELB 正在进行两阶段负载平衡。第一个负载平衡是跨 ELB 本身。这是通过将多个 IP 地址与 AWS 为您预置的 ELB 提供的主机名相关联来完成的。第二个当然是跨 ELB 后面的应用程序实例。

        不要试图冒犯 SO 之神,这是一篇非常有用的文章。

        https://blazemeter.com/blog/dns-cache-manager-right-way-test-load-balanced-apps

        其中最有用的信息是使用 JMeter 中的 DNS 缓存管理器模块。这将查询多个 DNS 服务器,并清除您的 DNS 缓存。

        我实现了该模块,然后设置了 Wireshark,过滤了属于 ELB 主机名的两个 IP 地址,果然,它同时查询了两个 IP 地址,尽管明显偏向另一个。

        这并没有太大的不同,至少在短期测试中不会。

        当我调整 ELB 运行状况设置时,真正的区别(吞吐量增加了 2-3 倍)出现了。我最初的错误率很高,但是在降低了不健康阈值和健康检查之间的间隔之后,我的错误率急剧下降。

        此外,虽然我所有其他测试的持续时间都是 60 到 90 分钟,但这次是 8 小时。我开始时吞吐量不错,然后很快下降(大约 2/3)。大约 20 分钟或更长时间后,吞吐量开始回升,到测试结束时,它的持续吞吐量大约是我在没有 ELB 时得到的吞吐量的 5 倍(这与它很快下降时的吞吐量相似开始此测试后)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多