下面从系统层面、MongoDB 配置、索引与架构、日常维护几个方面,系统讲一下 Debian 上优化 MongoDB 的方法,适合生产环境参考。
mkfs.xfs /dev/sdX
编辑 /etc/fstab:
/dev/sdX /data xfs defaults,noatime 0 0
# 提高文件描述符
echo "* soft nofile 64000" >> /etc/security/limits.conf
echo "* hard nofile 64000" >> /etc/security/limits.conf
# 禁用透明大页(MongoDB 官方要求)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
永久生效:
systemctl disable tuned
storage:
dbPath: /data/mongodb
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 4 # 物理内存的 50% 左右
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
bindIp: 0.0.0.0
port: 27017
maxIncomingConnections: 65536
⚠️ cacheSizeGB 不要超过内存 50–60%
db.setProfilingLevel(1, 100) // 超过100ms记录
查看:
db.system.profile.find().sort({ts:-1}).limit(10)
db.orders.createIndex({ user_id: 1, created_at: -1 })
db.orders.find({ status: "paid" }).explain("executionStats")
关注:
COLLSCAN ❌IXSCAN ✅db.users.find({}, { name: 1, age: 1 })
db.logs.insertMany([...])
db.posts.find().sort({_id:-1}).limit(20)
mongod --replSet rs0
rs.initiate()
_id)db.serverStatus()
db.stats()
db.collection.stats()
db.runCommand({ compact: "collectionName" })
mongodump --gzip --out /backup/mongo
| 项目 | 优化前 | 优化后 |
|---|---|---|
| 慢查询 | 多 | 极少 |
| CPU | 高 | 正常 |
| 磁盘 IO | 高 | 降低 |
| 响应时间 | 秒级 | 毫秒级 |
如果你愿意,可以告诉我:
我可以直接给你针对性配置方案。