MongoDB 如何使用内存? 为什么内存满了?( 二 )

存储引擎 Cache

MongoDB 3.2 及以后 , 默认使用 WiredTiger 存储引擎 , 可通过 cacheSizeGB 选项配置 WiredTiger 引擎使用内存的上限 , 一般建议配置在系统可用内存的60%左右(默认配置) 。

举个例子 , 如果 cacheSizeGB 配置为 10GB , 可以认为 WiredTiger 引擎通过tcmalloc分配的内存总量不会超过10GB 。 为了控制内存的使用 , WiredTiger 在内存使用接近一定阈值就会开始做淘汰 , 避免内存使用满了阻塞用户请求 。

目前有4个可配置的参数来支持 wiredtiger 存储引擎的 eviction 策略(一般不需要修改) , 其含义是:

推荐阅读


参数默认值含义
eviction_target80当 cache used 超过 eviction_target , 后台evict线程开始淘汰 CLEAN PAGE
eviction_trigger95当 cache used 超过 eviction_trigger , 用户线程也开始淘汰 CLEAN PAGE