Ubuntu 上 MongoDB 内存管理实践
一 内存使用机制与总体原则
二 在 Ubuntu 上设置与限制内存
调整 WiredTiger 缓存上限(推荐做法)
编辑配置文件 /etc/mongod.conf,在 storage.wiredTiger.engineConfig 下设置 cacheSizeGB,重启服务生效:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2 # 示例:将缓存上限设为 2GB
sudo systemctl restart mongod
说明:该值直接限制 WiredTiger 缓存占用,有助于避免与系统和其他进程争用内存。
通过 systemd 服务限制服务整体虚拟内存(可选)
创建覆盖配置以施加 ulimit:
sudo systemctl edit mongod
在打开的编辑器中加入:
[Service]
LimitAS=8G
LimitRSS=8G
保存后执行:
sudo systemctl daemon-reload && sudo systemctl restart mongod
说明:这是对 mongod 进程的整体虚拟内存/常驻内存上限,属于“兜底”限制,不能替代 cacheSizeGB 的精细控制。
使用 In-Memory 存储引擎(特定场景)
若业务允许将数据完全常驻内存,可切换存储引擎并设定容量:
mongod --storageEngine inMemory --dbpath /data/db --inMemorySizeGB 4
说明:In-Memory 适合低延迟、可接受数据易失的场景,生产使用前务必评估数据安全与恢复策略。
三 监控与诊断内存使用
四 系统层面的优化与常见误区