6

关于EC2 ELB的两个问题:

首先是如何正确运行 JMeter 测试。我发现了以下http://osdir.com/ml/jmeter-user.jakarta.apache.org/2010-04/msg00203.html,基本上说设置 -Dsun.net.inetaddr.ttl=0 when启动 JMeter(这很容易),第二点是路由是每个 ip 而不是每个请求。因此,除了开始一个 jmeter 实例农场之外,我不知道如何解决这个问题。欢迎任何想法,或者我可能误读了解释(?)

另外,我有一个 Web 服务正在对 Java 中的另一个 Web 服务进行服务器端调用(并且都在 ELB 之后),所以我使用 HttpClient 和它的 MultiThreadedHttpConnectionManager,我在其中提供了一些大型路由来托管值连接管理器。而且我想知道这是否会破坏负载平衡行为ELB,因为连接被缓存(并且请求都来自同一台机器)。我每次都可以切换到使用新的 HttpClient (有点蹩脚),但这并不能解决所有请求都来自少数主机的事实。

背景故事:我正在 EC2 上使用 ELB 对服务进行性能测试,但流量分布不均(大多数流量到 1-2 个节点,几乎没有流量到 1 个节点,根本没有流量到第 4 个节点)。因此,上述问题是我发现的可能罪魁祸首。

4

2 回答 2

1

我遇到了非常相似的问题。一件事是 ELB 在突发负载下不能很好地扩展。因此,当您尝试对其进行测试时,它不会立即扩大规模。它需要很长时间才能向上移动。另一个缺点是它使用 CNAME 作为 DNS 查找。仅这一点就会让你慢下来。您可以研究更多性能问题。

我的建议是使用 haproxy。你有更多的控制权,你会喜欢这种表现。我对此非常满意。我使用心跳来设置冗余服务器,我很高兴。

此外,如果您打算使用 ELB 进行 SSL,您将遭受更多损失,因为我发现性能低于标准。

我希望这会有所帮助。归根结底,AWS 亲自告诉我,对 ELB 进行负载测试并没有真正起作用,如果您计划以大量负载启动,您需要告诉他们,以便他们可以提前扩展您.

于 2012-02-10T22:29:09.583 回答
1

您没有说您正在运行多少个 jmeter 实例,但根据我的经验,它应该是您正在扩展的可用区数量的 2 倍左右。即使这样,您也可能会看到负载不平衡 - 看到负载在您的后端队列中精确缩放是非常不寻常的。

您可以通过在不同区域运行 jmeter 实例来提供帮助(一点)。

另一个因素是测试的持续时间。ELB 确实需要一些时间来扩展 - 您通常可以通过对 ELB 名称执行 nslookup 来判断正在运行的实例数量。了解您的扩展模式,并围绕它们构建测试。(因此,如果将另一个实例添加到 ELB 池需要 20 分钟,请包括 25-30 分钟的测试预热。)如果需要,您还可以让 AWS “预热” ELB 池。

如果您的 ELB 池大小足以进行测试,并且可以验证池在测试运行期间不会发生变化,您始终可以尝试直接针对 ELB IP 运行测试 - 即手动平衡流量。

我不确定第二层调用会发生什么 - 如果您正在打开连接并重新使用它,显然没有办法在不关闭和重新打开连接的情况下跨实例扩展。这些调用是在同一组服务器上运行,还是在不同的一组服务器上运行?您可以创建一个内部 ELB,并使用该端点进行连接,但我不确定这对您描述的场景有帮助。

于 2016-04-24T15:18:01.530 回答