AWS负载均衡器导致API请求缓慢

时间:2020-08-05 22:25:36

标签: amazon-web-services amazon-ec2 https amazon-elb

当通过我的AWS弹性负载均衡器通过https调用时,我的API请求非常慢。弄清楚使负载均衡器更有效所需的最佳方法是什么?我正在使用专门用于HTTP的负载平衡器,并在其后面带有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-140ms,很少出现峰值。

注意:我仅将负载平衡器用于HTTPS支持,(现在)我真的不在乎跨多个后端的实际负载平衡。现在,我只有一个后端。我所有的来电都将来自美国东海岸,并且我的服务器必须暂时留在欧洲。所以是的,我可以将服务器移至美国东海岸,这样一来电话就可以在一个区域内通话,但是由于其他各种原因,我不想这样做。

问题和可能的解决方案:

  • 我选择了应用程序负载平衡器,对吗?
  • 如何确定我的配置缓慢是我的责任?
  • 我应该将负载均衡器移到美国东海岸吗?并将EC2实例留在eu-central-1a中?
  • 我的ec2实例(c5.xlarge)除了http服务器外,几乎没有任何运行,因此我知道它不会因CPU和内存使用而超载。我的实例类型是否适合连接到负载均衡器?

问题已解决:

  • 从开发运营人员那里获得了一些帮助。在Route 53控制台中,他删除了我在设置向导中创建的两个A记录,并将其替换为直接指向我的别名的CNAME记录。奇怪的是,向导不允许我这样做。我必须使用Route 53的“旧版本”,以便直接在记录中键入内容。
  • 现在的性能很棒。建立安全连接时的第一个请求需要几百毫秒,但是此后的每个请求都是〜130ms。那就是从美国东海岸到德国法兰克福。现在按预期工作。
  • 我尝试将负载均衡器移动到另一个区域,但是AWS不允许这样做。

1 个答案:

答案 0 :(得分:1)

要获得最低的延迟,您将希望客户端和服务器之间的距离最短,使用cloudping,我什至可以直接看到AWS骨干网(这是AWS专用网络)上的AWS区域之间的延迟。 95.22ms。在公共互联网上,这会更多。

如果您当前无法将实例移动到另一个区域,则延迟性能仍然适用。但是,我建议您看一下AWS CDN服务CloudFront。

Amazon CloudFront内容交付网络(CDN)已大规模扩展并在全球范围内分布。 CloudFront网络具有216个状态点(PoP),并利用高度弹性的Amazon骨干网为最终用户提供卓越的性能和可用性。

CloudFront的主要功能是提供前端对象(图像,css,静态HTML)的本地缓存,如果您可以缓存这些对象中的任何一个,您的用户体验将得到显着改善。许多站点将使用此服务来缓存站点的许多静态或很少更改的部分,例如主页。

如果静态页面的某些部分是动态的,那么您可以考虑在初始页面加载之后异步地加载它们吗?这样一来,用户就可以感知网站正在加载,而页面的某些部分随后仍在加载。

您还将从CloudFront的性能改进中受益,例如它利用AWS骨干网来改善用户PoP位置和目标终端之间的延迟。

您可能会感兴趣的几个链接: