如何增加AWS EC2实例的网络带宽?

Sri*_*i K 6 bandwidth amazon-ec2 amazon-web-services

我们在AWS EC2中托管了一个类型为c4.8xlarge的站点.它是一个相当大的系统,拥有大量内存和计算资源.数周的用户试图在本周末的2小时内访问系统.虽然没有崩溃,但它的速度相当缓慢,未能达到预期的水平.分析统计数据表明,有限的网络带宽是导致经济放缓的主要原因.CPU使用率保持在6%以下,但在此期间,NetworkIn和NetworkOut似乎分别达到了60MB和200MB的峰值.虽然我不是网络的预期,但有些在线阅读似乎表明,通过一个网卡的所有流量都可能是网络带宽有限的主要原因.这是真的?在不同类型的EC2实例上托管网站有助于增加网络带宽吗?以下是networkIn和networkOut指标在重负载下的样子.

networkIn和networkOut指标图表

Bob*_*Gee 5

如果您受带宽限制,当您达到限制时,该图表将变得平坦.此外,正如其他人所指出的那样,只有1 MB/s输出和3 MB/s输入,而且我可以在t2.micro上对外部互联网做更多的事情.

系统对每个请求做了什么?以下列出了我要查看的内容:

  • 线程:您的应用程序中是否存在瓶颈,只有一个线程可以访问资源?这会使CPU使用率降低,但会导致您看到的模式.
  • 应用程序或服务器中的并发模式不正确.负载测试并随着连接的增加而变得越来越慢,而什么都不做.
  • 单个CPU:一个CPU加载到100%而其他CPU大多是空闲的?(使用30多个内核,饱和CPU只能为您提供3%的CPU使用率).一个饱和的CPU +其他闲置通常意味着并发问题,可能在连接处理中.
  • 什么是内存使用?你在使用交换吗?(如果是这样的话,这是一个非常糟糕的迹象,并会导致问题).如果内存使用过多,通常内存中的会话存储或过大的处理程序线程池都会出错.
  • 磁盘I/O或外部网络请求:您是在阅读还是写入每个请求?vmstat会告诉你是否要花很长时间等待I/O得到服务.如果是这样的话,我会先看一下日志.
    • c4.8xlarge实例仅使用EBS,如果存储是磁性的并且您写入访问日志,则每秒可以获得几百次写入.通用SSD为每GB基础提供3 IO/s,但在IO信用耗尽之前可以突破3000.
    • 操作系统将尝试组合写入,但有数千个并发

如果您的请求非常小,那么在连接创建或每秒数据包的情况下,您可能会在网络层遇到瓶颈,这并非不可能.


Nav*_*jay 1

是的,亚马逊有 ENI(弹性网络接口)的概念。虽然您可以向实例添加 NIC;它仍然是一个逻辑接口。网络管道的配置和可用性很大程度上取决于(完全取决于)您选择的类型实例。Amazon 有多种类型/系列的实例,例如 R、I、C、D、G,分别在内存、IO、计算、密集存储、GPU 方面进行了优化。你可以看看是否可以挤压最大。从他们当中。

无论您选择什么作为实例类型,您基本上都会达到一个阈值,并且无法扩展到超过某个点。与内存/CPU 等其他可扩展性因素相比,可扩展性尤其独特。

修改您的架构,而不是使用非常大/更大的实例,而是在 ELB 后面添加多个中型或大型实例。