2013-01-03 33 views
2

我正在使用mongodb來插入文檔。沒有爲我使用的集合創建的索引。但是我看到Mongodb使用的內存正在增長。機器有20GB的RAM被完全使用。我想知道這個原因,這是正常的嗎?即使只進行插入,mongodb的內存使用量也會很高

+1

隨着插入工作集的增加,操作系統的LRU會將插入的文檔保留在分頁內存中一段時間​​,直到您的操作系統決定將其刪除,因爲它不再被使用。你還必須考慮到,當你插入一個文檔時,MongoDB必須將'_id' btree的一部分加載到RAM中,這又增加了工作集。因此,如果您在短時間內插入大量數據,它會暫時增加MongoDB的RAM使用率,直到操作系統決定不需要數據爲止。 – Sammaye

回答

3

還有就是MongoDB中如何使用存儲和內存這裏的精彩討論:

http://docs.mongodb.org/manual/faq/storage/

具體到你的情況,蒙戈的存儲器映射的數據和索引住在(那些/數據的內部文件/ db目錄),這意味着這些文件被映射到操作系統的虛擬地址空間,然後每當MongoDB訪問一個頁面(文件的任何部分)時,該頁面將被拉入RAM中,並且它將一直呆在那裏,直到所有的RAM可用於由操作系統進行mongod進程(此時最少使用的頁面將被交換出RAM)。

您正在插入數據,因此您正在寫入數據文件 - 您正在寫入的那些頁面需要在RAM中(mongo寫入文件,但由於它們是內存映射,因此它可以與內存交互,就好像它是磁盤存儲)。如果mongod使用20GB以上的RAM,這意味着您的數據加上您的索引(加上其他一些開銷)爲20GB或更多。

相關問題