MongoDB 内存设置技巧
一 核心原则与WiredTiger缓存
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 8
二 监控与阈值
db.serverStatus().wiredTiger.cache
关注字段:bytes currently in the cache(缓存已用)、以及脏页相关指标。若“脏数据占比”持续超过20%,优先限流写入、扩容或提升回收线程。db.serverStatus().tcmalloc.tcmalloc.formattedString
关注 Bytes in use by application 与 Bytes in page heap freelist。若后者很大,说明内存被 tcmalloc 缓存未及时归还。三 关键可调参数与示例
db.runCommand({
setParameter: 1,
wiredTigerEngineRuntimeConfig: "eviction=(threads_max=8,threads_min=4)"
})
仅在脏页回收成为瓶颈时谨慎上调,避免占用过多 CPU。db.adminCommand({ setParameter: 1, tcmallocReleaseRate: 5.0 })
取值范围 [1,10],数值越大释放越快,可能对性能有轻微影响。四 系统层面的优化
vm.nr_hugepages=0echo never > /sys/kernel/mm/transparent_hugepage/enabledvm.swappiness=0 降低换页概率(需结合监控评估)。五 快速排查与处置清单