在 Debian 上调整 MongoDB 的内存使用,通常从操作系统限制、MongoDB 自身参数、systemd 限制三个层面来做。下面按常见场景说明。
MongoDB 默认会使用 约 50% 的物理内存 作为 WiredTiger 缓存。
修改配置文件(通常是 /etc/mongod.conf):
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2
表示最多使用 2GB 内存。
重启 MongoDB:
sudo systemctl restart mongod
每个连接都会占用内存。
net:
maxIncomingConnections: 200
如果你希望硬性限制,可以用 systemd。
编辑 service 文件:
sudo systemctl edit mongod
加入:
[Service]
MemoryMax=4G
MemoryHigh=3.5G
保存后执行:
sudo systemctl daemon-reload
sudo systemctl restart mongod
查看限制是否生效:
systemctl show mongod | grep Memory
ps -eo pid,comm,%mem,rss | grep mongod
在 /etc/security/limits.conf:
mongod soft nofile 64000
mongod hard nofile 64000
storage:
journal:
enabled: false
⚠️ 仅测试环境使用
operationProfiling:
mode: off
| 场景 | 建议 |
|---|---|
| 小内存 VPS(1–2G) | cacheSizeGB: 0.5–1 |
| 和 Nginx/Redis 同机 | systemd MemoryMax |
| Docker 部署 | --memory=2g |
| OOM 被杀 | 降低 cacheSizeGB + MemoryMax |
mongo
> db.serverStatus().wiredTiger.cache
看 maximum bytes configured
如果你能告诉我:
我可以直接给你一份可用的配置。