AWS、带宽和内容交付

Kee*_*eno 32 bandwidth amazon-ec2

我的问题是关于虚拟机以及通过服务器连接到 Internet 来传送它们的内容。

我有一个 Ec2 windows 实例,它的网络连接似乎是 100mbps

如果我要交付来自该 EC2 实例的内容,这是否是我的潜在瓶颈?

s3 有什么不同,我猜他们与 s3 没有真正的潜在出站瓶颈?

注意:我知道 s3 和他们的 CDN 更适合静态内容,但是我现在需要探索这种情况。我们的 HTML 页面需要通过 AJAX 访问服务器端页面,并且因为目前我们的内容和我们的服务器需要在完全相同的域中没有防弹解决方案,所以它排除使用 S3。

所需的带宽:我不确定,我们可以随时有多达 100 个用户下载视频,可能不会更多。每个视频最多 5mb,但最多可以查看 20 个。

cyb*_*x86 62

我不能说 Windows 实例,但我假设它们的基本特征与 Linux 实例非常相似。

您对带宽使用的估计是 100 个同步视频下载(我不确定您的意思是下载文件还是流式传输视频 - 我将假设后者)。如果我们采用 512kbps 的流速率,则需要大约 51Mbit/s 或 6.5MB/s。

EC2 实例的 I/O 性能(包括带宽)不同。有 3 个级别的 I/O 性能:低、中和高。但请记住,磁盘 I/O(即来自 EBS 卷)也取决于带宽。您只能真正考虑 EC2 网络内的带宽(因为它在 Internet 上完全可变)。

一些用于量化“低”、“中”和“高”的典型数字(不同来源引用不同的理论值数字,因此它们可能不完全准确)。

高: 理论值:1Gbps = 125MB/s;现实(来源):750Mbps = 95MB/s

中等: 理论:250Mbps;现实(来源,p57):80Mbps = 10MB/s

低: 理论:100Mbps;现实(来自我自己的测试):10-15Mbps = 1-2MB/s

(实际上也有一个“非常高”的级别(理论上为 10Gbps),但这仅适用于集群计算实例)。

进一步提到的一点是变化的程度。在较小的实例上,由于物理组件在更多虚拟机之间共享,因此性能变化更大。无论如何,你可以期望大约在+/-在你的业绩20%的变化(来源:123)。在您的情况下(根据顶部的假设/计算),您可能需要 13MB/s 的峰值带宽(双 6.5MBps,因为磁盘 I/O 也受网络限制)。如果您正在传输较低带宽的内容,您应该能够使用具有“中等”I/O 性能的实例(请参阅实例类型页面),如果您的计算导致更高的带宽要求,您将需要具有“高”I/O 性能的实例。简单地流式传输数据不应该受 CPU 或内存限制,但维持 100 个同时连接可能至少需要一个中等大小的实例 - 如果带宽是一个问题,基于上述情况,大型实例将是一个更安全的选择)。

我建议对您启动的服务器进行基准测试,看看它们是否满足您的(计算的)需求。启动两个实例(相同类型)并iperf使用实例的私有 IP 地址在每个实例上运行- 如果使用默认设置运行,则需要在安全组中打开端口 5001。此外,EC2 网络之外的大多数测试显示的结果在 80-130Mbps(大型实例)之间——尽管这些数字不一定有意义。

如果您的设置允许,CDN 将更适合您的需求。S3似乎有大约50MB的限制/ s的带宽(至少从单一实例),按照这篇文章,但比你应该要求的要高(S3不支持流)。Cloudfront 将更适合您的任务(因为它被设计为 CDN)并且默认支持 1000Mbps=125MB/s(来源),可根据要求提供更高的带宽,也可以流式传输内容)

  • 这些数字现在可能已经大不相同了(目前我似乎无法找到它们的来源)。4 年间发生了很多变化。众所周知,EC2 在集群组内具有 10Gbps 互连。AWS 曾经(在 2007 年)引用了 250Mbps 专用本地带宽的数字。目前,网络带宽在实例之间共享,根据实例类型(以及可能的 EBS 优化等因素)分配优先级。至少在一定程度上,实例大小决定了您与之共享资源的其他实例的数量。如果网络未使用,您的实例将获得更大的份额。 (4认同)