AWS、頻寬和內容傳遞
我的問題是關於虛擬機並通過伺服器連接到網際網路來提供它們的內容。
我有一個 Ec2 windows 實例,它的網路連接似乎是 100mbps
如果我要從該 EC2 實例傳遞內容,那是我的潛在瓶頸嗎?
s3 有何不同,我猜他們與 s3 沒有真正的潛在出站瓶頸?
注意:我知道 s3 和他們的 CDN 對於靜態內容會更好,但是我現在需要探索這種情況。我們的 HTML 頁面需要通過 AJAX 訪問伺服器端頁面,並且由於目前我們的內容和我們的伺服器需要位於完全相同的域上,因此沒有防彈的工作,因此它排除了使用 S3。
需要的頻寬:我不確定,我們可以有多達 100 個使用者隨時下載影片,可能不會更多。每個影片最多可達 5mb,但最多可觀看 20 個。
我不能代表 Windows 實例,但我會假設它們的基本特徵與 Linux 實例非常相似。
您對頻寬使用的估計是同時下載 100 個影片(我不確定您的意思是下載文件還是流式傳輸影片 - 我假設是後者)。如果我們採用 512kbps 的流率,您需要大約 51Mbit/s 或 6.5MB/s。
EC2 實例的 I/O 性能(包括頻寬)不同。I/O 性能有 3 個級別:低、中和高。但請記住,磁碟 I/O(即來自 EBS 卷)也取決於頻寬。您只能真正考慮 EC2 網路內的頻寬(因為它將在 Internet 上完全可變)。
一些用於量化“低”、“中”和“高”的典型數字(不同來源引用不同的理論值數字,因此它們可能不完全準確)。
高: 理論:1Gbps = 125MB/s;現實(來源):750Mbps = 95MB/s
中等: 理論:250Mbps;現實(來源,p57):80Mbps = 10MB/s
低: 理論:100Mbps;現實(根據我自己的測試):10-15Mbps = 1-2MB/s
(實際上也有一個“非常高”的級別(理論上為 10Gbps),但這僅適用於集群計算實例)。
另一個值得一提的是變化的程度。在較小的實例上,由於物理組件在更多虛擬機之間共享,因此性能存在更大的可變性。無論如何,您可以預期您的表現會有大約 +/-20% 的變化(來源:1、2、3)。在您的情況下(根據頂部的假設/計算),您可能需要 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(源),可根據要求提供更高的頻寬,也可以流式傳輸內容)