Java

Mongo插入數據時佔用太多記憶體

  • May 16, 2014

我使用 mongo 作為數據庫日誌。我將應用程序的所有日誌都儲存在上面,因此我的插入率很高,例如每秒 100 次插入。為此,我開發了應用程序的一部分,專門用於在 mongo 中儲存數據。這個應用程序只使用一個 mongo 連接器。

但是記憶體消耗高得驚人,我的意思是開始使用mongo後堆記憶體增加了大約300MB,CPU佔用了90%以上。任何人都知道我可以如何減少這種記憶體消耗或為什麼會發生這種情況?我嘗試使用 Mysql 並且堆記憶體保持正常(僅增加 20MB)並且 Cpu 不會隨著 mongo 情況增加。

要儲存的數據非常簡單。事實上,我使用以下 json 進行單獨測試,結果相同。

{testData:‘我的東西’}

有沒有辦法用 mongo 創建數據源?

看到這個連結。 https://groups.google.com/forum/#!topic/mongodb-user/w7G1xRy3TZQ

底線是 Mongo 在可用 RAM 中記憶體索引和數據

您使用什麼 WriteConcern?

如果您使用 WriteConcern.UNACKNOWLEDGED(預設)或 ERRORS_IGNORED,您的寫入將不會被阻止,並且伺服器將緩衝所有數據以嘗試跟上。如果您發送數據的速度快於它可以寫入磁碟的速度,則它需要將所有數據緩沖在記憶體中。使用 WriteConcern.JOURNLED 來避免這種情況。

如果您有副本集,則需要將 WriteConcern.MAJORITY 用於這些用途。我有一個類似的問題,主節點確認所有內容,但副本無法跟隨,導致操作日誌填滿,直到磁碟空間用完。

問候。

引用自:https://dba.stackexchange.com/questions/64653