连接到 AWS 负载均衡器时实例变慢

qui*_*cls 4 ruby-on-rails amazon-ec2 amazon-web-services unicorn amazon-elb

我在 AWS 负载均衡器后面设置了 5 个 t1.micro EC2。

一旦连接到 LB,所有实例都会变慢。即使我直接向实例发出请求(绕过 LB),10 个请求中有 8 个需要超过 30 秒。实例的 CPU 负载似乎不是问题。当我从 LB 中删除其中一个实例时,它的响应很好。一旦它被添加回 LB,请求就会再次变慢。

任何人都可以给我一些线索,说明为什么一旦 LB 连接起来,实例的响应速度就会慢得多?

提前致谢

小智 5

听起来像是由于(可能)长的 Keep-Alive 标头导致请求在您的 ELB 中排队。ELB 将通过遵守 Keep-Alive 标头来尽量减少与后端的连接数。

如果您的后端节点有空闲资源来处理该传入连接,则短(或禁用)保持活动将强制 ELB 为每个请求打开一个到后端的连接。长时间保持连接会减少后端连接,并会强制 ELB 尽可能多地序列化请求,这可能会导致请求等待其他人被处理。

在负载测试期间检查 Cloudwatch 中的 ELB 队列,如果它们在后端空闲时增长,请尝试降低每个连接的请求数量并减少 Keep-Alive 超时。确切值将根据您的应用要求而有所不同。

PS:t1.micro 是邪恶的 PS(2):粘性是邪恶的