我已经在 AWS 负载均衡器后面设置了 5 个 t1.micro EC2。
一旦实例连接到 LB,所有实例的速度都会变慢。即使我直接向实例发出请求(绕过 LB),10 个请求中有 8 个需要超过 30 秒。实例的 CPU 负载似乎不是问题。当我从 LB 中删除其中一个实例时,它响应良好。一旦将其重新添加到 LB,请求速度就会再次变慢。
有人能给我一些线索,为什么一旦 LB 连接起来,实例的响应就会变得如此之慢吗?
提前致谢
答案1
听起来像是请求在 ELB 中排队,因为(可能)Keep-Alive 标头太长。ELB 将尝试通过遵守 Keep-Alive 标头来最大限度地减少与后端的连接数量。
如果您的后端节点有空闲资源来处理传入连接,短时间(或禁用)保持连接将强制 ELB 为每个请求打开一个到后端的连接。长时间保持连接将减少后端连接,并强制 ELB 尽可能序列化请求,这可能会导致请求等待其他请求被处理。
在负载测试期间检查 Cloudwatch 中的 ELB 队列,如果它们在后端空闲时增长,请尝试降低每个连接的请求数并减少 Keep-Alive 超时。确切的值将根据您的应用程序要求而有所不同。
PS:t1.micro 是邪恶的 PS(2):粘性是邪恶的