1. 系统级基础优化
/etc/default/grub,添加GRUB_CMDLINE_LINUX_DEFAULT="quiet numa=off transparent_hugepage=never";更新GRUB配置(sudo grub-mkconfig -o /boot/grub/grub.cfg)并重启系统。也可通过/etc/rc.local添加echo never > /sys/kernel/mm/transparent_hugepage/enabled实现运行时关闭。2. MongoDB配置文件调优
/etc/mongod.conf,设置storage.wiredTiger.engineConfig.cacheSizeGB为物理内存的50%-70%(如8GB内存可设为4GB),确保常用数据和索引缓存在内存中,减少磁盘I/O。net.bindIp设置为0.0.0.0允许远程访问(生产环境需限制为特定IP);开启认证(security.authorization: enabled)并创建具有适当角色的用户,保障数据库安全。3. 索引策略优化
db.collection.createIndex({ field: 1 }));对多字段查询使用复合索引(db.collection.createIndex({ field1: 1, field2: -1 })),注意索引顺序需匹配查询逻辑。explain("executionStats")分析查询执行计划,确认索引是否被命中;定期删除未使用的索引(通过db.collection.dropIndex()),减少索引维护开销。4. 查询语句优化
db.collection.find({ field1: 1 }, { _id: 0, field1: 1 }))仅返回所需字段,减少网络传输和内存消耗。where操作符匹配大量数据),优先使用索引;将复杂查询拆分为聚合管道(如$match+$group),减少中间文档生成。5. 硬件与部署架构优化
rs.initiate()添加副节点)提高读取性能和数据冗余;使用分片(sh.enableSharding()+sh.shardCollection())分散数据负载,提升写性能和可扩展性。6. 监控与持续调优
mongostat监控每秒查询次数、插入/更新操作等实时指标;mongotop查看热点集合(磁盘I/O高的集合),定位性能瓶颈。db.setProfilingLevel(1, 50)开启慢查询记录(阈值设为50ms),定期分析慢查询日志,针对性优化查询语句或索引。