在 Debian 上配置 MongoDB 的内存使用,主要通过 MongoDB 自身的配置参数 来实现,而不是单纯依赖系统层面的设置。下面按常见场景给你一个完整说明(适用于 MongoDB 4.x / 5.x / 6.x / 7.x,Debian 10/11/12 通用)。
MongoDB 的内存使用主要包括:
WiredTiger 缓存(最重要)
max(50% of RAM - 1GB, 256MB)
文件系统缓存(OS Page Cache)
连接、排序、聚合等临时内存
| 场景 | 建议 |
|---|---|
| 专用 MongoDB 服务器 | WiredTiger 缓存 ≈ 50% 内存 |
| 与程序共用 | WiredTiger 缓存 < 30% 内存 |
| 小内存机器(< 2GB) | 手动限制缓存,否则容易 OOM |
Debian 默认配置文件路径:
/etc/mongod.conf
编辑:
sudo nano /etc/mongod.conf
在配置文件中添加或修改:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 2
示例说明:
cacheSizeGB: 2 → 限制 MongoDB 使用 2GB 内存cacheSizeGB: 1.5
✅ 这是控制 MongoDB 内存最有效的方法
MongoDB 每个连接都会占用内存,建议限制:
net:
maxIncomingConnections: 500
sudo systemctl restart mongod
检查状态:
sudo systemctl status mongod
mongosh
或旧版本:
mongo
db.serverStatus().wiredTiger.cache
重点关注:
maximum bytes configuredbytes currently in the cachesudo swapoff -a
永久关闭(编辑 /etc/fstab,注释 swap 行)
sudo sysctl -w vm.swappiness=1
docker run -m 4g --memory-reservation 3g mongo
并配合:
cacheSizeGB: 2
⚠️ Docker 内存 ≠ MongoDB 缓存大小
❌ 只限制 Docker 内存,不限制 MongoDB
❌ 把 cacheSizeGB 设置成接近 100% 内存
❌ 小内存机器使用默认配置
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 0.75
net:
maxIncomingConnections: 200
Debian 上 MongoDB 内存配置,核心就是
wiredTiger.cacheSizeGB,不要依赖系统自动分配。
如果你愿意,可以告诉我:
我可以帮你给出 最优配置方案。