centos mongodb内存配置指南
导读:CentOS 上 MongoDB 内存配置指南 一 核心原则与快速建议 以 WiredTiger 为存储引擎时,真正决定 MongoDB 堆外内存占用的是 cacheSizeGB。经验值为:专用数据库服务器可设为物理内存的50%–70%;...
CentOS 上 MongoDB 内存配置指南
一 核心原则与快速建议
- 以 WiredTiger 为存储引擎时,真正决定 MongoDB 堆外内存占用的是 cacheSizeGB。经验值为:专用数据库服务器可设为物理内存的50%–70%;若同机运行其他服务,应下调并为系统和其他进程预留充足内存。WiredTiger 缓存不包含连接、排序、聚合等额外工作内存,这些会叠加在 cache 之外。通过配置文件或启动参数均可设置该值。示例:storage.wiredTiger.engineConfig.cacheSizeGB。修改后需重启实例生效。
二 配置步骤
- 编辑配置文件:/etc/mongod.conf
- 设置 WiredTiger 缓存(示例为 8GB):
- storage:
- wiredTiger:
- engineConfig:
- cacheSizeGB: 8
- engineConfig:
- wiredTiger:
- storage:
- 设置 WiredTiger 缓存(示例为 8GB):
- 命令行启动时指定(等效):
- mongod --wiredTigerCacheSizeGB=8
- 重启并使配置生效:
- systemctl restart mongod
- 验证生效:
- mongo --eval “db.serverStatus().wiredTiger.cache[‘maximum bytes configured’]/1024/1024/1024”
- 观察返回值为配置的 GB 级别数值(如 8)。
三 操作系统层优化
- 降低换页倾向(减少 swap 使用,建议值 10):
- sysctl vm.swappiness=10
- 持久化:echo “vm.swappiness=10” > > /etc/sysctl.conf
- 内存过量提交策略(建议值 1,更利于数据库工作负载):
- sysctl vm.overcommit_memory=1
- 持久化:echo “vm.overcommit_memory=1” > > /etc/sysctl.conf
- 透明大页(THP):建议关闭,降低内存碎片与延迟波动
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
- 持久化:将上述命令加入 /etc/rc.local 或 systemd 服务(如 tuned)以保证开机执行
- cgroups/容器场景:如需硬性上限,可用 systemd 为 mongod 设置 MemoryLimit(示例 10G):
- systemctl set-property mongod MemoryLimit=10G
- 注意:该上限是 cgroup 级别,不等价于 WiredTiger 的 cacheSizeGB,二者需协调设置。
四 监控与容量规划
- MongoDB 自带工具:
- mongostat --host localhost --port 27017(观察 mem.resident、mem.virtual、qr/qw 等)
- mongotop(观察集合读写耗时)
- 精细查看 WiredTiger 缓存命中与用量:
- mongo --eval “db.serverStatus().wiredTiger.cache”
- 系统层观察:
- top/htop、free -m、/proc/meminfo
- 容量建议:
- 工作集(常访问数据 + 索引)尽量全部装入内存;若 cache 命中率偏低或 page faults 升高,优先考虑增加内存或优化索引/查询。
五 常见场景配置示例
- 专用数据库服务器(物理内存 16GB):
- cacheSizeGB 设为约 10–12GB(为文件系统页缓存、连接、排序/聚合等预留 4–6GB)
- 同机多服务(物理内存 32GB,预留 8GB 给系统与其他服务):
- cacheSizeGB 设为约 20–22GB
- 容器/虚拟化(cgroup 限制 16GB):
- MemoryLimit=16G;为 WiredTiger 设置 cacheSizeGB 略低于该值(如 14–15GB),避免触发 OOM 或性能劣化
- 快速验证命令汇总:
- 配置:mongod --wiredTigerCacheSizeGB=8
- 重启:systemctl restart mongod
- 验证:mongo --eval “db.serverStatus().wiredTiger.cache[‘maximum bytes configured’]/1024/1024/1024”。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos mongodb内存配置指南
本文地址: https://pptw.com/jishu/776657.html
