关于EC2 ELB的两个问题:
首先是如何正确运行JMeter测试。我发现以下http://osdir.com/ml/jmeter-user.jakarta.apache.org/2010-04/msg00203.html,它基本上说在启动JMeter时设置-Dsun.net.inetaddr.ttl = 0(这很简单),第二点是路由是按IP而不是按请求进行的。因此,除了启动jmeter实例服务器场之外,我看不到如何解决这个问题。欢迎提出任何想法,或者我可能误读了说明(?)
另外,我有一个Web服务正在用Java(以及在ELB之后)对另一个Web服务进行服务器端调用,所以我使用的是HttpClient及其MultiThreadedHttpConnectionManager,在其中我提供了一些较大的路由来承载主机值。连接管理器。而且我想知道这是否会破坏负载平衡行为ELB,因为连接被缓存了(而且请求全部来自同一台机器)。我可以每次都切换为使用新的HttpClient(有点la脚),但这并不能解决所有请求都源自少量主机的事实。
背景:我正在使用EC2上的ELB对服务进行性能测试,并且流量分布不均(大多数流量到1-2个节点,几乎没有流量到1个节点,根本没有流量到第4个节点)。因此,上述问题是我确定的可能原因。
最佳答案
我遇到了非常类似的问题。一件事是ELB在突发负载下无法很好地扩展。因此,当您尝试对其进行测试时,它不会立即扩大规模。向上移动需要很多时间。另一个缺点是,它使用CNAME作为DNS查找的事实。仅此一项就会使您减速。您可以研究更多性能问题。
我的建议是使用haproxy。您拥有更多的控制权,并且您会喜欢它的性能。我对此非常满意。我使用心跳来设置冗余服务器,我很好。
另外,如果您打算使用ELB进行SSL,则您会遭受更多的痛苦,因为我发现性能会低于标准水平。
希望对您有所帮助。当涉及到这一点时,AWS亲自告诉我,负载测试ELB并没有真正起作用,如果您打算以大量负载启动,则需要告诉他们,以便他们可以提前扩大规模。