CentOS 上 MongoDB 内存配置指南
一 核心概念与默认行为
二 配置步骤
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 4
保存后重启服务使配置生效:sudo systemctl restart mongod。db.setParameter({
internalQueryExecMaxBlockingSortBytes: 104857600, # 100MB
internalQueryExecMaxMemoryUsageMB: 512 # 512MB
})
注意:不同版本支持的可调参数与取值范围可能不同,请以所用版本文档为准。三 容量规划与推荐值
| 物理内存 | 单实例建议 cacheSizeGB | 说明 |
|---|---|---|
| 8GB | 3–4GB | 预留 4–5GB 给 OS、连接、文件系统缓存 |
| 16GB | 7–8GB | 工作集接近内存时优先扩容内存而非继续增大缓存 |
| 32GB | 14–16GB | 若同机还有其他服务,适当下调 |
| 64GB | 28–30GB | 结合连接数、聚合/排序负载再微调 |
| 注:WiredTiger 缓存仅缓存数据/索引的“工作集”,并非把全部数据常驻内存。 |
四 系统层面优化
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
为持久化,可写入 /etc/rc.local 或 systemd 的 ExecStartPre 脚本中(不同发行版路径略有差异)。sudo sysctl vm.swappiness=10 与 sudo sysctl vm.overcommit_memory=2,并写入 /etc/sysctl.conf 持久化。* soft nofile 65536
* hard nofile 65536
五 监控与验证
db.serverStatus().memdb.serverStatus().wiredTiger.cache