Linux

遠端 MongoDB 伺服器還是本地伺服器?

  • March 31, 2011

我使用 MongoDB + Apache 的 1GB Linode (VPS)。

MongoDB 有 150 萬多條記錄。服務完全依賴的腳本的多個實例導致 50 多個活動連接和每秒約 50 個查詢。

我的free -m輸出

            total       used       free     shared    buffers     cached
Mem:           995        974         21          0          4        823
-/+ buffers/cache:        145        849
Swap:          511         79        432

現在,每個實例的腳本需要大約 17MB(已經優化),並且正如我所說的它執行的多個實例。可用記憶體記憶體 (849 MB!) 和實際可用記憶體 (21 MB) 存在巨大差異。我無法執行 PHP 腳本的實例,我收到記憶體分配失敗的錯誤消息。

大部分記憶體被 MongoDB 使用,它也導致高 CPU 使用率,250+ %. 這是沒用的,我什至可以在 849 MB 內執行我的 PHP 腳本的許多實例。我想知道遠端託管我的 MongoDB 是否會更好(我更喜歡 MongoHQ)。他們有一個每月 15 美元的計劃,這對我來說是公平的。我可以降級到 768 MB 的 linode,這在沒有 MonogDB 的情況下就足夠了。

但是,使用遠端託管數據庫有什麼缺點?每秒 50 多個連接和約 50 個查詢?接下來會有頻寬問題。

任何幫助是極大的讚賞。

如果要遠端執行數據庫,請在與應用伺服器相同的網段或至少在相同的數據中心執行它。

即使您獲得低於 10 毫秒的低(ish)延遲,這也可能會影響您的查詢,具體取決於您擁有的數據負載類型。

此外,您最終會在系統中添加另一個故障點,應用程序伺服器和數據庫伺服器之間的通信可能會失敗。MongoDB 沒有對其協議使用任何加密,除非您以某種方式對其進行隧道傳輸,否則您的數據將在天知道有多少躍點之間執行清晰。而且,正如您所指出的,還有頻寬使用。總的來說,我建議你讓另一個節點來執行你的數據庫,但在你的應用程序伺服器的同一位置。

引用自:https://serverfault.com/questions/253984