在一臺更強大的機器上實現mongodb分片與說100個分片只是爲了實現更高的concurrenct寫入數據庫,因爲我被告知,每個monogod.exe進程都有一個全局鎖?假設這是可能的,那麼這個問題會給我更高的寫入併發性嗎?MongoDB在一臺機器上分片
回答
在機器上運行多個mongods不是一個好主意。每個mongod進程都會嘗試使用所有可用的內存,強制其他mongod的內存映射頁面內存不足。這將在大多數情況下創建大量的交換。
全局數據庫的鎖一般不會有問題,因爲是體現在:http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html
只用一臺機器一個mongod的(但它的罰款添加mongos或配置服務器以及),除非它是一些簡單的測試。
歡呼聲, 德里克
唯一使用情況下,我發現運行在同一臺服務器上幾個mongod的是增加高延遲連接複製速度。
正如Derick強調的那樣,在運行mongodb時,寫入鎖並不是真正的問題。
要回答你的問題:是你能證明蒙戈縮放每臺機器的幾個實例(每臺服務器SEMS 4個實例是不夠的),如果你的測試不涉及太多的數據(否則首頁輸出將大大decrase你的表現,我已經測試過了)
但是,實例仍然會競爭的資源。你所要做的就是將數據庫鎖定問題轉移到資源鎖定問題上。
我完全不同意。我們的設置中每盒運行8個碎片。它由兩個頭節點組成,每個頭節點都有兩臺用於複製的機器。總共6盒。這些帶有大約120GB內存,32個內核和2TB的強壯框。每盒有8個碎片(爲了歷史目的,我們可以將其設置爲8),我們確保我們有效利用CPU。 RAM自行排除。你必須觀察指標,並確保你沒有太多分頁,但是如果你確實把SSD硬盤泄漏到磁盤驅動器上,那麼SSD硬盤就不算太壞。
RAM如何自我排序?另外,您是否決定爲更高的寫入吞吐量或其他功能設置這麼多碎片? – iCode 2014-04-22 02:07:46
我們使用了Mongo Map Reduce(MR),它需要CPU的能力來處理所有的數據。原始分片設置了每個核心的碎片。這給了我們最大的CPU。從那以後,這個盒子已經升級了,所以我們現在每4個內核碎片。至於內存,它是將索引保存在RAM中的練習。數據永遠不會適應,所以不要擔心。我們監視我們的索引相對於RAM的大小,並已升級到適應。我們也刪除了我們不需要的索引。 – 2014-04-22 16:54:51
是的,你可以,事實上,這是我們爲50+密爾寫重型數據庫所做的。只要確保每個mongod的所有索引都適合RAM,並且還有增長和維護的空間。
但是,有一個小小的折衷:根據您的目標QPS是什麼,這種共享需要機器具有更大的馬力,而在單臺機器上分片將不會,並且在大多數情況下,您可以取消商品,更便宜的硬件。不管是什麼情況,請進行一系列性能測試(ageinst IO,Network,PQS等)並仔細建立您的基準並考慮SSD驅動器的存儲,這聽起來有點偏頗,但Linux XFS存儲器也是需要考慮的事情。
- 1. MongoDB在一臺機器上導入成功,在另一臺機器上失敗
- 2. Solr在同一臺機器上分片是否有用?
- 3. SerializationException在一臺機器上,而不在另一臺機器上
- 4. mongoDB複製+在2臺服務器上分片合理嗎?
- 5. NoSQL在一臺機器上
- 6. 未在另一臺機器上的新節點上分配碎片/副本
- 7. mongodb分片在後臺收集
- 8. 在單臺機器上運行分片數據庫
- 9. 在一臺機器上構建Android並在另一臺機器上模擬它
- 10. OpenMP在一臺機器上並行,但在另一臺機器上串行
- 11. vc9錯誤4430在一臺機器上,而不在另一臺機器上
- 12. 在多臺機器上分配狀態
- 13. 在Linux下分配一臺機器IP
- 14. 多臺Informatica Powercenter客戶機在同一臺機器上?
- 15. Liferay在同一臺機器上集羣
- 16. 僅在一臺機器上安裝
- 17. Redis - 在一臺機器上的Node.js?
- 18. IPC在同一臺機器上... WCF
- 19. iOS4.2和iOS4.1在同一臺機器上?
- 20. 在MongoDB中分片
- 21. 在一臺機器上編譯gcc4.4.6,如何讓另一臺機器使用它?
- 22. Android @Overrride在一臺機器上工作,但不是另一臺機器
- 23. Ansible在一臺機器上「失去了密碼」但不是另一臺機器
- 24. MongoDB的分片 - 上市碎片
- 25. CORBA,在兩臺機器上
- 26. MongoDb分片設置在副本集上
- 27. MongoDB:在分片羣集上查詢
- 28. 鍵盤顯示模擬器在一臺機器上,而不是在另一臺機器上
- 29. 在一臺機器上獲取JDOMException,但同一個xml在另一臺機器上正常工作
- 30. Mongodb不分片
100個碎片可能太多了,但如果在強壯的服務器上使用幾個碎片獲得更好的寫入性能,我不會感到驚訝。儘管如此,爲什麼不把你的碎片放在單獨的較不健壯的服務器上?你期望得到什麼樣的插入/更新率? – 2012-02-09 00:01:35
主要原因是我需要做的POC的可用性,我想知道是否可以模擬我可用的服務器的分片環境。我假設一個擁有8核心和32GB內存的服務器被認爲是強壯的。我希望能夠獲得1000個併發寫入和10,000個併發讀取,其中每個讀取或寫入請求將不會超過0.5秒鐘由數據庫提供服務。這對於MongoDB更合理嗎?每個讀取的查詢結果大小和要寫入的數據量並不大,這主要是爲了向db提供許多併發的讀取或寫入請求。 – iCode 2012-02-09 02:54:12
你在這裏深刻體會到了。我甚至有道理嗎? – iCode 2012-02-09 02:57:30