Linux
遠端 MongoDB 伺服器還是本地伺服器?
我使用 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 沒有對其協議使用任何加密,除非您以某種方式對其進行隧道傳輸,否則您的數據將在天知道有多少躍點之間執行清晰。而且,正如您所指出的,還有頻寬使用。總的來說,我建議你讓另一個節點來執行你的數據庫,但在你的應用程序伺服器的同一位置。