在 Debian 上限制 MongoDB 的内存使用,常见有 几种方式,从“官方推荐”到“系统层限制”都有。下面按推荐程度和适用场景说明。
MongoDB 默认会用 约 50% 物理内存 作为 WiredTiger 缓存。
编辑配置文件(Debian 通常为):
sudo nano /etc/mongod.conf
在 storage.wiredTiger.engineConfig 中设置:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2 # 例如限制为 2GB
重启:
sudo systemctl restart mongod
✅ 这是最推荐的方式 ❌ 不影响 MongoDB 其他内存(连接、索引、JS 等)
每个连接都会占内存。
net:
maxIncomingConnections: 100
Debian 使用 systemd 管理 MongoDB,可直接限制进程资源。
sudo systemctl edit mongod
添加:
[Service]
MemoryMax=3G
MemoryHigh=2.5G
保存后执行:
sudo systemctl daemon-reload
sudo systemctl restart mongod
✅ 好处:
⚠ 注意:
适合多实例或老系统(非 systemd)。
cgcreate -g memory:/mongo
echo 3G > /sys/fs/cgroup/memory/mongo/memory.limit_in_bytes
cgexec -g memory:mongo mongod
docker run -d \
--name mongo \
-m 3g \
mongo:6
❌ 修改 ulimit -v(不稳定)
❌ 手动杀进程
❌ 依赖 swap(性能极差)
db.serverStatus().wiredTiger.cache
ps aux | grep mongod
或从 systemd:
systemctl status mongod
| 场景 | 推荐方式 |
|---|---|
| 普通 Debian 服务器 | wiredTiger.cacheSizeGB |
| 不想 MongoDB 吃满内存 | systemd MemoryMax |
| Docker 部署 | -m |
| 多实例隔离 | cgroups |
如果你愿意,可以告诉我:
我可以帮你给出具体数值配置。