首页主机资讯centos mongodb内存配置指南

centos mongodb内存配置指南

时间2025-12-19 21:13:04发布访客分类主机资讯浏览666
导读: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
  • 命令行启动时指定(等效):
    • 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.residentmem.virtualqr/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
怎样在centos上启动redis服务 centos mongodb使用案例分析

游客 回复需填写必要信息