首页主机资讯Ubuntu中MongoDB的内存配置

Ubuntu中MongoDB的内存配置

时间2026-01-20 03:01:04发布访客分类主机资讯浏览250
导读:Ubuntu 下 MongoDB 内存配置与优化 一 内存模型与关键参数 默认存储引擎为 WiredTiger,其用户态缓存是内存占用的“大头”。可通过参数 storage.wiredTiger.engineConfig.cacheSiz...

Ubuntu 下 MongoDB 内存配置与优化

一 内存模型与关键参数

  • 默认存储引擎为 WiredTiger,其用户态缓存是内存占用的“大头”。可通过参数 storage.wiredTiger.engineConfig.cacheSizeGB 限制缓存上限;若不设置,WiredTiger 会尽量使用可用内存,但会受系统压力触发淘汰。经验上,当实例单独占用一台机器时可使用默认;与其他进程混部时,建议将 cacheSizeGB 设为分配给 mongod 内存的约 60%。监控时可关注 WiredTiger 的 cache used,通常不应超过 0.8 × cacheSizeGB,若长期接近 95% 或 dirty 接近 20%,说明淘汰压力大,需要扩容或优化 IO。连接数也会影响内存与上下文切换,必要时通过 net.maxIncomingConnections 限制最大并发连接。系统层面建议配置 swap,以避免内存紧张时被 OOM Killer 终止进程。

二 配置步骤

    1. 编辑配置文件:多数安装下配置文件为 /etc/mongod.conf(若通过包管理器安装,路径通常一致)。
    1. 设置 WiredTiger 缓存上限(示例为 4GB):
      storage:
      wiredTiger:
      engineConfig:
      cacheSizeGB: 4
    1. 限制并发连接(示例为 2000):
      net:
      maxIncomingConnections: 2000
    1. 重启使配置生效:
      sudo systemctl restart mongod
    1. 验证:
      mongo --eval “db.serverStatus().wiredTiger.cache[‘maximum bytes configured’]/1024/1024/1024”
      上述路径与重启方式适用于 Ubuntu 上常见的 MongoDB 部署;cacheSizeGB 与 maxIncomingConnections 为常用且有效的内存相关调优项。

三 不同存储引擎与场景配置

  • WiredTiger(默认):通过 cacheSizeGB 控制用户态缓存上限;可按“分配给 mongod 的内存 × 0.6(读多写少可到 0.8)”取值,以平衡命中率与系统稳定性。
  • MMAPv1(旧引擎,不推荐新环境):无显式缓存上限,主要通过 storage.mmapv1.smallFiles、关闭数据/索引预分配等参数降低内存与磁盘占用,适用于小内存环境或遗留系统。
  • In-Memory 引擎(企业版):数据常驻内存,可用 –inMemorySizeGB 指定容量,适合超低时延场景,但需确保充足内存与高可用设计。

四 监控与容量规划

  • 在 shell 中查看内存与缓存:
    • 总体内存:db.serverStatus().mem(含 residentvirtualmapped
    • WiredTiger 缓存:db.serverStatus().wiredTiger.cache(含 bytes currently in the cachemaximum bytes configured 等)
  • 观察要点:
    • cache used 持续接近 0.8 × cacheSizeGB 属正常波动;若长期 ≥ 95% 或 dirty ≥ 20%,说明淘汰压力大,应扩容或提升磁盘 IO 能力。
    • 合理控制连接池与并发,避免连接风暴导致内存与上下文切换激增。
    • 规划机器内存时,为 OS 与其他进程预留 1–2GB,再按上述系数分配给 WiredTiger 缓存。

五 常见问题与系统层面建议

  • 只部署单个 mongod 且负载稳定:可保留默认(不显式设置 cacheSizeGB),让 WiredTiger 自适应可用内存。
  • 多实例或与其他服务混部:按“配额 × 0.6”设置 cacheSizeGB,并配合 maxIncomingConnections 控制连接数,避免相互挤压。
  • 避免 OOM:为系统配置适量 swap,虽会增加慢查询时的延迟,但可显著降低被 OOM Killer 终止的风险。
  • 查询优化:减少无索引排序、聚合与全表扫描,降低临时内存与 page fault 概率。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu中MongoDB的内存配置
本文地址: https://pptw.com/jishu/786571.html
Linux syslog服务器如何搭建 如何通过Swagger在Debian实现自动化测试

游客 回复需填写必要信息