当通过我的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支持,(现在)我真的不在乎跨多个后端的实际负载平衡。现在,我只有一个后端。我所有的来电都将来自美国东海岸,并且我的服务器必须暂时留在欧洲。所以是的,我可以将服务器移至美国东海岸,这样一来电话就可以在一个区域内通话,但是由于其他各种原因,我不想这样做。
问题和可能的解决方案:
问题已解决:
答案 0 :(得分:1)
要获得最低的延迟,您将希望客户端和服务器之间的距离最短,使用cloudping,我什至可以直接看到AWS骨干网(这是AWS专用网络)上的AWS区域之间的延迟。 95.22ms
。在公共互联网上,这会更多。
如果您当前无法将实例移动到另一个区域,则延迟性能仍然适用。但是,我建议您看一下AWS CDN服务CloudFront。
Amazon CloudFront内容交付网络(CDN)已大规模扩展并在全球范围内分布。 CloudFront网络具有216个状态点(PoP),并利用高度弹性的Amazon骨干网为最终用户提供卓越的性能和可用性。
CloudFront的主要功能是提供前端对象(图像,css,静态HTML)的本地缓存,如果您可以缓存这些对象中的任何一个,您的用户体验将得到显着改善。许多站点将使用此服务来缓存站点的许多静态或很少更改的部分,例如主页。
如果静态页面的某些部分是动态的,那么您可以考虑在初始页面加载之后异步地加载它们吗?这样一来,用户就可以感知网站正在加载,而页面的某些部分随后仍在加载。
您还将从CloudFront的性能改进中受益,例如它利用AWS骨干网来改善用户PoP位置和目标终端之间的延迟。
您可能会感兴趣的几个链接: