文章目录
一、MongoDB内存使用概览
MongoDB内存消耗主要有两部分:
1、存储引擎
2、client建立的连接的请求处理
1.1 存储引擎对内存的消耗
MongoDB 3.2版本之后默认存储引擎位wiredtiger,wiredtiger存储引擎可以通过cacheSizeGB来进行控制,一般建议该参数设置为系统可用内存的60%。
MongoDB 使用 Google tcmalloc 作为内存分配器。当内存接近一定的阈值时,就会开始做淘汰,避免内存使用满了阻塞用户请求。
tcmalloc内存淘汰机制:
参数 | 默认值 | 含义 |
---|---|---|
eviction_target | 80 | 当 cache used 超过 eviction_target,后台evict线程开始淘汰 CLEAN PAGE |
eviction_trigger | 95 | 当 cache used 超过 eviction_trigger,用户线程也开始淘汰 CLEAN PAGE |
eviction_dirty_target | 5 | 当 cache dirty 超过 eviction_dirty_target,后台evict线程开始淘汰 DIRTY PAGE |
eviction_dirty_trigger | 20 | 当 cache dirty 超过 eviction_dirty_trigger, 用户线程也开始淘汰 DIRTY PAGE |
在这