【发布时间】:2020-11-26 04:07:34
【问题描述】:
当通过我的 AWS 弹性负载均衡器通过 https 调用时,我的 API 请求非常慢。弄清楚我需要做什么才能使负载均衡器更高效的最佳方法是什么?我正在使用专门针对 HTTPs 的负载均衡器,并运行一个带有 HTTP 服务器的 ec2 实例。
eu-central-1a、eu-central-1b 中的 AWS 弹性负载均衡器。
eu-central-1a 中的 EC2 实例是托管 http 服务器的 c5.xlarge。
当我通过 HTTPS 调用从美国东海岸向负载平衡器发出 API 请求时,它可以工作,但速度非常慢。最佳情况是 400 毫秒,大约 20% 的时间会达到 800-1500 毫秒。
当我通过 HTTP 从美国东海岸直接向 EC2 实例发出 API 请求时,完全绕过了负载均衡器,速度非常快。几乎总是 130-140 毫秒,很少出现尖峰。
注意:我仅将负载平衡器用于 HTTPS 支持,我并不真正关心(现在)跨多个后端的实际负载平衡。目前,我只有一个后端。我所有的来电都来自美国东海岸,我的服务器暂时必须留在欧洲。所以是的,我可以将我的服务器移至美国东海岸,以便在一个地区进行通话,但出于各种其他原因,我不想这样做。
问题和可能的解决方案:
- 我选择了 Application Load Balancer,对吗?
- 如何判断我的配置是否应该归咎于它的缓慢?
- 我是否应该将我的负载均衡器移到美国东海岸,客户将从那里拨打电话?并将 EC2 实例留在 eu-central-1a 中?
- 我的 ec2 实例 (c5.xlarge) 除了 http 服务器外绝对没有在其中运行,所以我知道它不会因 CPU 和内存使用而过载。我的实例类型不适合连接到负载均衡器吗?
问题已解决:
- 从开发运维人员那里得到了一些帮助。在 Route 53 控制台中,他删除了我在设置向导中创建的两条 A 记录,并将它们替换为直接指向我的别名的 CNAME 记录。奇怪的是,巫师不让我这样做。我不得不使用 Route 53 的“旧版本”,它让我可以直接输入记录。
- 现在性能很好。建立安全连接时的第一个请求需要几百毫秒,但之后的每个请求大约需要 130 毫秒。那是从美国东海岸到德国法兰克福。现在按预期工作。
- 我尝试将负载均衡器移动到另一个区域,但 AWS 不允许这样做。
【问题讨论】:
-
如果你的用户都在我们东部,你能把你的服务移到更近的地区吗?负载均衡器不应该增加太多延迟,但没有其他明显的答案。
-
@JohnRotenstein 我明天试试。有什么简单的方法可以将负载均衡器移动到另一个区域,还是我必须创建一个新的并将其指向 ec2 实例?
-
请记住,对于小型负载来说,HTTPS 需要 2 倍于 HTTP 所需的时间是正常的……所以如果您的 HTTP 仅需要 140 毫秒,那么 HTTPS 的绝对最佳理论时间是 280 毫秒。您还需要查看负载均衡器日志,因为它们会告诉您均衡器和 EC2 之间的时间,您需要先了解这些信息,然后才能有效地进行故障排除。
-
@JohnRotenstein 看起来我无法在第 5 步:注册目标下选择另一个区域中的实例。 imgur.com/DygCKwF 可能无法将负载均衡器放在与 EC2 实例不同的区域?
-
感谢大家的帮助。我找到了问题并在上面列出了解决方案。
标签: amazon-web-services amazon-ec2 https amazon-elb