не мало памяти, но после удаления у процесса mongod объем занимаемой памяти не уменьшился (если смотреть через top)
Освобождение произойдет позже или как?
Mongod пытается занять всю память, которую ей положено занять согласно конфигу. По умолчанию это половина памяти машины. Поэтому, в top точно ничего не увидеть. Если индекс не использовался, то он и вовсе мог не загружаться в память. Например, если в коллекцию не было записи. Если запись была, то в память загружается только горячая часть индекса. В зависимости от специфики индекса и паттернов записи горячим может быть как весь индекс, так и какая-то небольшая его часть, не зависящая от объёма коллекции. Чтобы увидеть, сколько реально индекс занимал в памяти, нужно смотреть внутреннюю статистику по памяти mongod.
Статистика по кэшу для конкретных индексов можно посмотреть через db.collection.stats({indexDetails:true}) https://docs.mongodb.com/manual/reference/method/db.collection.stats/
Разумеется, эта штука покажет только использование кэша в моменте. Чтобы была история, нужно по cron'у писать в какой-нибудь ElasticSearch. Возможно, есть и готовые инструменты для сбора таких метрик, но я ничего такого не использовал.
Обсуждают сегодня