Назад | Перейти на главную страницу

Использование виртуальной памяти MongoDB

Я тестирую MongoDB для архивных данных. У нас есть коллекция из 160 миллионов строк. Экземпляр MongoDB занимает 76,2 Гб виртуальной памяти в блоке физической памяти 12 Гб ;-) Своп обнулен.

Я прочитал, что виртуальная память = физическая + своп.

Что не так в моем случае? Это проблема самого mongoDB?

Спасибо

MongoDB использует файлы с отображением памяти, которые могут быть намного больше, чем фактический физический (или своп), доступный на вашем компьютере. В результате общая используемая виртуальная память обычно равна размеру всех данных на диске в данный момент.

Резидентная память будет представлять собой статистику, которая представляет фактический используемый рабочий набор, хотя в зависимости от ваших ресурсов на коробке и схемы использования она будет со временем расти и приближаться к общему объему физической ОЗУ на хосте. В принципе, если ОС не видит необходимости выгружать старые данные (нехватка памяти), они останутся в ОЗУ.

Когда вы перезапускаете MongoDB, все начинается снова с нуля. Поэтому, если у вас есть известные временные рамки для вашего фактического набора рабочих данных (скажем, вы используете только последние 7 дней), то установленный размер после этого периода времени (при условии регулярного, предсказуемого использования) будет представлять ваш приблизительный размер рабочего набора в терминах оперативной памяти.

Более подробную информацию можно найти в Документах здесь:

http://www.mongodb.org/display/DOCS/Caching

http://www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage

Наконец, MMS (который является бесплатным) хорошо отображает это для вас с течением времени - сопоставленный, виртуальный, резидентный и не сопоставленный, а также множество других статистических данных (ищите "i" на каждом графике для объяснения) .

http://mms.10gen.com