Ubuntu 上 MongoDB 内存管理实用技巧
一 核心原则与默认行为
二 配置 WiredTiger 缓存上限
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 3
mongod -f /etc/mongod.conf --wiredTigerCacheSizeGB 3
三 操作系统层优化
sudo tee /etc/systemd/system/disable-thp.service <<EOF
[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp.service
sudo sysctl vm.swappiness=10
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl vm.overcommit_memory=2
echo "vm.overcommit_memory=2" | sudo tee -a /etc/sysctl.conf
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
四 查询与索引层面的内存控制
db.adminCommand({
setParameter: 1,
internalQueryExecMaxBlockingSortBytes: 104857600
})
db.adminCommand({
setParameter: 1,
internalQueryExecMaxMemoryUsageMB: 512
})
五 监控与容量规划