2016-05-05 31 views
14

我有一些應用程序需要的圖像。有許多圖像(50,000+),但總體尺寸很小(40 Mb)。最初,我以爲我會簡單地使用S3,但上傳速度很慢。作爲一個臨時的解決方案,我想附上一個包含圖像的EBS,那很好。但是,閱讀了一些關於EBS通用(gp2)的內容,我注意到以下說明:IOPS(在Amazon EBS中)在實踐中意味着什麼?

GP2是Amazon EC2實例的默認EBS卷類型。這些卷由固態驅動器(SSD)提供支持,適用於各種事務性工作負載,其中包括dev/test 環境,低延遲交互式應用程序和引導卷。 GP2旨在提供一位數毫秒的等待時間,可提供3 IOPS/GB的一致基準性能,最高可達到IOPS,並可提供每卷160 MB/s的吞吐量。

3 IOPS/GB的數量是令我擔心的。這實際上意味着什麼?假設您需要少量用戶的電子商務網站(例如<每分鐘10,000個請求),並且需要檢索這些圖像。亞馬遜describes IOPS如何測量:

當小的I/O操作是物理上連續的,亞馬遜EBS 嘗試將它們合併成一個單一的I/O到最大尺寸。例如,對於 示例,對於SSD卷,單個1,024個KiB I/O操作會將 計爲4次操作,而每次4個KiB的256次I/O操作將計爲操作次數爲 。

這實際上是否意味着如果我想在一秒鐘內檢索50個10kB的映像,我需要50個IOPS並輕鬆超過3個IOPS的基準?

UPDATE

感謝Mark B的建議下,我能夠使用S3上傳我的文件。但是,我仍然想知道執行常見任務(如運行數據庫或爲Web應用程序提供其他文件)所需的IOPS數量。根據您的經驗,我很樂意聽取關於IOPS最小值的一些參考值。

+1

我發現這個AWS會話https://www.youtube.com/watch?v=OuyUbvtgfDk對於理解EBS性能如何工作非常有用 – Vorsprung

+0

@Vorsprung很好。我會看看。謝謝。 –

回答

9

您缺少該聲明的「/GB」部分。基準爲每GB 3 IOPS 。如果您的EBS卷是100GB,那麼您將擁有300 IOPS的基準。對於GP2 EBS卷,您必須將卷的大小乘以3以獲得IOPS。

請注意,1TB以下的任何GP2卷也能夠以高達3,000 IOPS的速度發作,因此任何有限的IO增加都應該表現得非常好。


另外,我會補充一點,S3聽起來更適合您的用例。如果您看到S3上傳速度緩慢,那麼這是一個可以解決的問題。您可以使用CloudFront來提供您可以上傳到的附近邊緣位置。

根據我的經驗,上傳到S3的速度永遠不會比上載到您的EBS卷所附帶的EC2實例慢。


更新:

爲了回答您的其他問題,如可用的RAM量將取決於許多變量所需的最低IOPS,應用的類型,你正在運行,如何應用緩存內存中的值,IO操作的平均大小等。確定一個確切的數字並指出您需要某個應用程序的X IOPS確實很困難。

您還需要記住,1TB以下的任何卷在幾秒鐘內仍可以突發高達3000 IOPS。因此,即使您的應用程序在使用時需要高IOPS,如果它沒有看到太多的使用情況,IOPS突發功能可能也是它所需要的。

一般情況下,我通常從100GB容量300 IOPS開始,測試我的應用程序的性能。完全在RAM內運行的Web服務器可能永遠不需要更多。對於像數據庫這樣的東西,您可能會從您認爲需要的磁盤空間量開始,然後開始性能測試。 CloudWatch將顯示您的應用程序正在使用的IOPS數量,如果您發現它在最大容量限制下最大,那麼您將知道需要增加可用的IOPS。沖洗並重復,直到在性能測試期間不再使可用IOPS達到最大值。

+0

不幸的是,正如我所說的,所有圖像的大小不超過50兆字節,所以我不想使用更大的磁盤(也許我應該)。因此,我的問題假設有一個荒謬的1GB EBS卷。但是,你觸及另一個重要的點。在哪些條件下,我將能夠達到3,0000 IOPS?不過,我相信有信用額度。是的,絕對S3仍然是我的第一選擇,但我想知道每GB的3 IOPS。順便說一句,我認爲速度慢是由於我的上傳速度緩慢以及大量的小文件。 –

+0

將這麼少量的圖片上傳到S3應該非常快。而且我不知道上傳到EC2實例的計劃會如何提高上傳速度。 –

+0

因爲這些圖像可以從其他服務器獲得,所以我可以快速地進行wget和解壓縮。 –

3

@Mark B的答案可能是正確的,因爲它指出你的IOPs是基於你的EBS卷的大小。對於你想要的,S3是最好的選擇。

但是,根據您的使用情況和要求,可能需要EBS。如果你想運行一個數據庫,情況尤其如此。在那種情況下,你有幾個選擇。您可以獲得預置IOPS - 如果您知道需要5000 IOPS,但只需要說100 GB的存儲(其中gp2通常會爲您提供約300 IOPS),則可以使用io1卷。這需要額外的成本,並且您需要確保它連接到EBS優化實例,但如果需要,您可以獲得高達20k的IOPS。

如果您正在進行大量順序讀取(在大型數據集中讀取?),那麼還有一種新型的EBS st1。這對於500MB/s是好的,並且不到gp2的1/2的成本。

最後,還有一種情況可以考慮(比如說,你有點瘋狂,想嘗試做奇怪的事情)。如果你可以從某個地方抓取檔案,並且你關心的是從一個非常快速的文件系統提供它們,你可以把它們放在一個有實例存儲的實例上。這是本地連接的SSD,因此速度非常快。唯一的缺點是,當你的實例停止時,你的數據不見了。

要解決您的更新問題,「您需要多少個IOPS來存儲數據庫」,答案是「取決於」。每個數據庫引擎都有不同的要求,每個數據庫使用都有不同的使用模式。如果您需要更多信息,請參閱this。但基本上,測試&監視器。如果你擔心,在啓動時超額準備,並根據需要縮減。或者猜測,如果遇到問題就會增加 - 爲降低成本或爲最終用戶提供良好性能,更重要嗎?

+0

謝謝。我認爲在這種情況下,S3仍然是最好的選擇,但你對一個大型數據庫的建議是非常需要的。你能解決我的問題中的更新嗎?問題是我不確定我需要多少IOPS,所以我想根據以前的經驗獲得參考值。 –