在 Debian 上调整 MongoDB 的内存使用,通常是从 MongoDB 自身配置 和 系统层面限制 两个方面来做。下面按常见场景说明。
MongoDB 主要使用内存做 WiredTiger 存储引擎缓存。
编辑配置文件(Debian 通常是):
sudo nano /etc/mongod.conf
在 storage 下添加或修改:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2
表示最多使用 2GB 内存
不设置时,MongoDB 默认使用:(物理内存 - 1GB) 的 50%
修改后重启:
sudo systemctl restart mongod
进入 mongo shell:
mongosh
执行:
db.serverStatus().memory
关注:
resident:常驻内存virtual:虚拟内存mapped:映射内存如果你希望 硬限制 MongoDB 进程内存,可以用 systemd。
sudo systemctl edit mongod
写入:
[Service]
MemoryMax=3G
MemoryHigh=2.5G
说明:
MemoryHigh:软限制(优先使用)MemoryMax:硬限制(超过会被 OOM)保存后执行:
sudo systemctl daemon-reload
sudo systemctl restart mongod
✅ 适合 VPS / 容器 / 多服务共存
cat /proc/$(pgrep mongod)/limits
在 /etc/security/limits.conf:
mongod soft nofile 64000
mongod hard nofile 64000
❌ MongoDB 没有 maxMemory 参数
✅ 只能靠 cacheSizeGB + 系统限制
❌ 以为 swap 能解决内存问题
✅ swap 只会拖慢 MongoDB
❌ 内存越小越好
✅ 太小会导致频繁磁盘 IO
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 1.5
systemd:
MemoryHigh=3G
MemoryMax=3.5G
如果你愿意,可以告诉我:
我可以帮你给出 精确的内存参数。