2012-07-18 191 views
2

我對Mongodb和EC2瞭解不多。所以作爲外行人員,我的問題是如果mongodb服務器安裝在STANDARD SMALL EC2 LINUX/UBUNTU實例上,那麼mongodb服務器可以處理多少I/O(以kb/mb/gb /秒爲單位),而不會窒息。Mongodb on Amazon EC2

是否有任何公式或軟件或網站,可以告訴一個服務器的最大強度或輸出?

注:MongoDB的和EC2實例安裝在默認模式。

預先感謝

回答

3

TL/DR:在我們的測試中,利用M1.Large EBS可以處理(平均)約250非順序的I/O每秒的操作。在測試大小時,這通常不會超過每秒20-30MB。這是AWS「高」IO設置的一部分。對Smalls來說,它們屬於「中等」IO,因此爲了安全起見,它將大約是該輸出的1/2到2/3 ...儘管完全披露,但我們還沒有對較小的實例進行任何測試。

更長,更散漫的答案...

這是一個複雜的問題,因爲它最終取決於你的活動數據集有多大,如果它比與該實例相關的RAM 1.7GB顯著更多。無法放入內存的數據越多,MongoDB就越需要去磁盤才能獲取數據,而且數據庫等待數據庫(臭名昭着的Amazon IO)返回時,您的應用程序需要等待更多的數據向它請求數據。

而且,與MongoDB的鎖,如果你是更容易受到較慢的IO(即插入和更新......主要是更新),然後爭可以得到你。另外,如果您不想擔心這些問題並且能夠有效擴展,您可以使用MongoDB託管服務之一(如MongoHQ ...免責聲明,我是創始人),因爲他們允許隨着您的成長,您可以有效擴展,並讓您可以更輕鬆地在不同級別測試IO。

所以,內存和I/O性能是選擇一個實例時要考慮的重要事情。

5

沒有確定什麼,你可以在服務器上運行一個特定的公式,因爲這將根據您的服務器配置和你的應用程序(和服務器)實際上做的時候有很大不同。還會有平均負荷相對於高峯負荷..這可能會更高。

例如:

  • ,如果你的工作數據集比可用RAM大的服務器,如果你在同一個運行Web服務器可能會花費大量的時間洗牌從磁盤文件到內存
  • 實例作爲數據庫服務器..兩人將可用的資源競爭
  • 如果你正在做大量的數據更新,你的服務器將使用更多的資源比相同數量的讀取
  • ,如果你沒有適當的索引檢索,你的數據庫服務器會使用更多資源

對於MongoDB,有用的出發點是Optimization上的文檔。

您應該建立資源監測一些主動服務(如:Munin)瞭解一段時間內的應用程序的使用模式。

制定出爲你的應用程序可以處理,你也可以嘗試用load test的許多基準測試工具之一瞎猜。關鍵是制定出準確的測試配置文件,並確定潛在的性能熱點/弱點來解決。