温馨提示×

debian mongodb内存怎么调

小樊
42
2026-09-05 13:04:08
栏目: 云计算

在 Debian 上调整 MongoDB 的内存使用,通常从操作系统限制、MongoDB 自身参数、systemd 限制三个层面来做。下面按常见场景说明。


一、MongoDB 自身内存参数(最常用)

1. 限制 WiredTiger 缓存大小(重点)

MongoDB 默认会使用 约 50% 的物理内存 作为 WiredTiger 缓存。

修改配置文件(通常是 /etc/mongod.conf):

storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2

表示最多使用 2GB 内存。

重启 MongoDB:

sudo systemctl restart mongod

2. 限制连接数(间接减少内存)

每个连接都会占用内存。

net:
  maxIncomingConnections: 200

二、用 systemd 限制 MongoDB 内存(推荐)

如果你希望硬性限制,可以用 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

三、操作系统层面限制(cgroup / ulimit)

1. 查看当前 MongoDB 内存占用

ps -eo pid,comm,%mem,rss | grep mongod

2. 文件句柄 & 进程数(避免 OOM)

在 /etc/security/limits.conf:

mongod soft nofile 64000
mongod hard nofile 64000

四、关闭不需要的功能(省内存)

1. 关闭 Journal(不推荐生产)

storage:
  journal:
    enabled: false

⚠️ 仅测试环境使用


2. 减少审计 / 慢日志

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


如果你能告诉我:

  • Debian 版本
  • MongoDB 版本
  • 服务器内存大小
  • 是否正常被 OOM kill

我可以直接给你一份可用的配置。

0 踩