温馨提示×

debian mongodb怎么调内存

小樊
35
2026-10-05 09:27:09
栏目: 云计算

在 Debian 上调整 MongoDB 的内存使用,通常是从 MongoDB 自身配置 和 系统层面限制 两个方面来做。下面按常见场景说明。


一、MongoDB 自身内存相关配置(推荐先看这个)

MongoDB 主要使用内存做 WiredTiger 存储引擎缓存。

1️⃣ 限制 WiredTiger 缓存大小(最常用)

编辑配置文件(Debian 通常是):

sudo nano /etc/mongod.conf

在 storage 下添加或修改:

storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2

表示最多使用 2GB 内存
不设置时,MongoDB 默认使用:(物理内存 - 1GB) 的 50%

修改后重启:

sudo systemctl restart mongod

2️⃣ 查看当前内存使用情况

进入 mongo shell:

mongosh

执行:

db.serverStatus().memory

关注:

  • resident:常驻内存
  • virtual:虚拟内存
  • mapped:映射内存

二、通过 systemd 限制 MongoDB 内存(系统级)

如果你希望 硬限制 MongoDB 进程内存,可以用 systemd。

1️⃣ 创建 override 配置

sudo systemctl edit mongod

写入:

[Service]
MemoryMax=3G
MemoryHigh=2.5G

说明:

  • MemoryHigh:软限制(优先使用)
  • MemoryMax:硬限制(超过会被 OOM)

保存后执行:

sudo systemctl daemon-reload
sudo systemctl restart mongod

✅ 适合 VPS / 容器 / 多服务共存


三、Linux 系统层面(cgroup / ulimit)

1️⃣ 查看 MongoDB 当前限制

cat /proc/$(pgrep mongod)/limits

2️⃣ 调整文件描述符 & 进程数(间接影响内存)

在 /etc/security/limits.conf:

mongod soft nofile 64000
mongod hard nofile 64000

四、常见误区

❌ MongoDB 没有 maxMemory 参数
✅ 只能靠 cacheSizeGB + 系统限制

❌ 以为 swap 能解决内存问题
✅ swap 只会拖慢 MongoDB

❌ 内存越小越好
✅ 太小会导致频繁磁盘 IO


五、推荐配置示例

场景:2核4G Debian 服务器

storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1.5

systemd:

MemoryHigh=3G
MemoryMax=3.5G

如果你愿意,可以告诉我:

  • ✅ Debian 版本
  • ✅ MongoDB 版本
  • ✅ 服务器内存大小
  • ✅ 是否单机 / 副本集

我可以帮你给出 精确的内存参数。

0 踩