下面给你一套在 Debian 上优化 MongoDB 的实用指南,从系统层、MongoDB 配置、存储、索引、监控几个方面来,适合生产环境。
推荐:
ext4xfs(官方推荐,性能更好)df -T
如果是新环境,优先用 XFS。
MongoDB 强烈不建议开启 THP。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
开机自动关闭:
nano /etc/systemd/system/disable-thp.service
[Unit]
Description=Disable Transparent Huge Pages
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/defrag"
[Install]
WantedBy=multi-user.target
systemctl enable disable-thp
systemctl start disable-thp
MongoDB 需要大量文件描述符。
nano /etc/security/limits.conf
添加:
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 64000
mongod hard nproc 64000
MongoDB 依赖内存,swap 会严重拖慢性能。
sysctl vm.swappiness=1
永久:
nano /etc/sysctl.conf
vm.swappiness=1
配置文件一般在:
/etc/mongod.conf
避免 MongoDB 占满内存。
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 4 # 建议物理内存的 50% 左右
例如:
cacheSizeGB: 4cacheSizeGB: 8net:
port: 27017
bindIp: 0.0.0.0
maxIncomingConnections: 1000
不要无限大,建议 1000–5000。
避免日志拖慢性能:
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
verbosity: 0
MongoDB 是 IO 密集型数据库,SSD 提升巨大。
/var/lib/mongodb
避免和系统盘混用。
mount -o remount,noatime /var/lib/mongodb
永久:
nano /etc/fstab
/dev/sdb /var/lib/mongodb xfs noatime 0 0
db.setProfilingLevel(1, { slowms: 100 })
db.collection.createIndex({ field: 1 })
避免:
定期清理无用索引:
db.collection.getIndexes()
即使只有一台机器,也建议用副本集:
replication:
replSetName: rs0
mongod --replSet rs0
rs.initiate()
好处:
工具:
mongostatmongotophtopdb.runCommand({ compact: "collectionName" })
Debian 自带版本可能较旧。
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | gpg --dearmor | tee /usr/share/keyrings/mongodb-archive-keyring.gpg
echo "deb [ signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg ] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list
apt update
apt install mongodb-org
✅ 关闭 THP
✅ 调整 ulimit
✅ 设置 cacheSizeGB
✅ 使用 SSD + XFS
✅ 建立合适索引
✅ 监控慢查询
✅ 使用副本集
如果你愿意,可以告诉我:
我可以给你更精确的配置参数。