1. 系统级基础优化
/etc/default/grub,添加GRUB_CMDLINE_LINUX_DEFAULT="quiet numa=off transparent_hugepage=never",运行sudo grub-mkconfig -o /boot/grub/grub.cfg更新GRUB并重启;或通过/etc/rc.local添加echo never > /sys/kernel/mm/transparent_hugepage/enabled(需赋予执行权限sudo chmod +x /etc/rc.d/rc.local),实时关闭Transparent Hugepage。2. MongoDB配置文件调优
/etc/mongod.conf(Debian默认配置文件路径),关键设置包括:
storage.wiredTiger.engineConfig.cacheSizeGB:根据服务器内存调整(建议为物理内存的50%-70%,避免占用过多内存导致系统卡顿);net.bindIp:若需远程访问,设置为0.0.0.0(需配合防火墙规则限制IP,防止未授权访问);operationProfiling.mode:设为slowOp(记录慢查询,默认阈值100ms)或all(记录所有操作),便于后续分析性能瓶颈;replication.replSetName:如需副本集,设置为副本集名称(如rs0),提升读取性能与数据冗余。3. 索引策略优化
_id、username、timestamp)创建单字段索引(db.collection.createIndex({ field: 1 })),或复合索引(db.collection.createIndex({ field1: 1, field2: -1 }),适用于多条件查询);db.collection.find({ field: 1 }, { _id: 0, field: 1 })),避免访问实际文档,减少I/O开销;db.collection.reIndex()重建碎片化索引,保持索引效率;使用db.collection.explain("executionStats")分析查询计划,确认索引是否被有效利用。4. 硬件资源优化
cacheSizeGB需求;dbPath)存放在SSD分区;5. 分片与副本集部署
rs.initiate()初始化副本集(如rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "mongo1:27017" }, { _id: 1, host: "mongo2:27017" }] })),提升读取性能(从节点可处理读取请求)与数据冗余(自动同步数据);sh.enableSharding("database")+sh.shardCollection("database.collection", { shardKey: 1 }))将数据水平切分到多个服务器,分散读写压力,提升整体吞吐量。6. 查询与操作优化
db.currentOp()监控当前正在执行的操作,识别长时间运行的查询;通过explain()方法(如db.collection.find({ query }).explain("executionStats"))查看查询执行计划,确认是否使用了索引;{ field1: 1, field2: 1 })仅返回必要字段,减少数据传输量;限制返回结果数量(limit(10)),避免一次性获取过多数据;insertMany()、updateMany()等批量操作替代单条操作,减少网络往返次数,提升写入效率。7. 监控与维护
mongostat(实时监控每秒查询次数、插入/更新/删除操作数、磁盘I/O等指标)、mongotop(查看集合级别的读写时间分布)监控数据库性能;或使用第三方工具(如Percona Monitoring and Management(PMM))进行更详细的分析与报警;mongodump/mongorestore),防止数据丢失;监控磁盘空间(确保dbPath所在分区有足够剩余空间,避免因空间不足导致数据库崩溃)。