在 Debian 上限制 MongoDB 的内存使用,常见有 三种思路:MongoDB 自身参数限制、systemd 限制、cgroup 限制。下面按推荐程度说明。
MongoDB 主要内存占用来自 WiredTiger cache。
修改配置文件(通常是 /etc/mongod.conf):
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2
表示最多使用 2GB 内存(不含连接、索引构建等额外内存)。
重启服务:
sudo systemctl restart mongod
✅ 优点
❌ 缺点
每个连接都会占用内存:
net:
maxIncomingConnections: 200
如果你只想限制 mongod 进程本身:
编辑 systemd 配置:
sudo systemctl edit mongod
添加:
[Service]
MemoryMax=3G
MemoryHigh=2.5G
保存后:
sudo systemctl daemon-reload
sudo systemctl restart mongod
✅ 优点
❌ 缺点
适合服务器上多个服务共存的情况。
sudo mkdir /sys/fs/cgroup/mongo
echo 3G | sudo tee /sys/fs/cgroup/mongo/memory.max
echo $(pgrep mongod) | sudo tee /sys/fs/cgroup/mongo/cgroup.procs
(生产环境建议用 systemd 或 cgmanager 管理)
ulimit -v(容易崩溃)生产环境最佳实践:
wiredTiger.cacheSizeGB = 物理内存的 50%~60%
systemd MemoryMax = cacheSizeGB + 1~2GB
例如 8G 服务器:
cacheSizeGB: 4
MemoryMax=6G
如果你愿意,可以告诉我:
我可以帮你算一个精确配置值。