我们在AWS EC2中托管了一个类型为c4.8xlarge的网站。它是一个相当大的系统,拥有大量内存和计算资源。数周的用户试图在本周末的2小时内访问系统。虽然它没有崩溃,但它减慢了很多,并且未能达到预期的水平。分析统计数据表明,有限的网络带宽是导致经济放缓的主要原因。 CPU使用率保持在6%以下,但在此期间,NetworkIn和NetworkOut似乎分别达到了60MB和200MB的峰值。虽然我不是网络的预期,但有些在线阅读似乎表明,通过一个网卡的所有流量都可能是网络带宽有限的主要原因。这是真的?在不同类型的EC2实例上托管网站有助于增加网络带宽吗?以下是networkIn和networkOut指标在重负载下的样子。
答案 0 :(得分:5)
如果您受带宽限制,当您达到限制时,该图表将变得平坦。此外,正如其他人指出的那样,只有1 MB / s输出和3 MB / s输入,而且我可以在t2.micro上对外部互联网做更多的事情。
系统对每个请求执行的操作是什么?以下列出了我要查看的内容:
这并非不可能,但你不太可能在连接创建或每秒数据包的情况下在网络层遇到瓶颈,如果你的请求非常小。
答案 1 :(得分:0)
您的NetworkIn和Out实际上> 50mb / s。如果您的CPU和内存保持在合理范围内,那么您的实例就可以了。您还应该检查数据库上的连接日志(假设您在系统中运行RDB)实际上可能是因为数据库响应缓慢导致Web服务器响应变慢。
此外,您应该使用AWS Loadbalancer以及设置和自动调节器运行您的系统,并在网络上输入/输出触发器。这样就可以启动辅助实例来协助临时增加网络负载。如果根本原因确实是数据库连接的增加,那么负载均衡器将无法解决问题。相反,您希望改进缓存设置,以便减少每个用户/网站连接数据库的负担。
答案 2 :(得分:-1)
是亚马逊有一个ENI的概念 - 弹性网络接口。虽然你可以为实例添加额外的NIC;它仍然是一个逻辑接口。网络管道的供应和可用性在很大程度上取决于(完全取决于)您选择的类型实例。亚马逊有几种类型/系列的实例,如R,I,C,D,G - 分别在内存,IO,计算,密集存储,GPU上进行优化。你可以看看你是否可以挤压最大值。他们之外。
无论您选择什么样的实例类型,您实际上都会达到一个阈值,并且无法超出某个点。可扩展性与内存/ CPU等其他可扩展性因素特别相同。
修改你的体系结构,而不是让非常大/更大的实例有几个中型或大型实例和ELB。