MongoDB性能调优技巧(Debian版)
storage.wiredTiger.engineConfig.cacheSizeGB参数调整),以提高查询速度。ufw)、禁用SELinux等,减少系统资源消耗。/etc/security/limits.conf,增加MongoDB进程的文件描述符限制(如mongod hard nofile 64000、mongod soft nofile 64000),避免高并发时连接数受限。/etc/mongod.conf,设置storage.wiredTiger.engineConfig.cacheSizeGB为可用内存的50%-70%(如cacheSizeGB: 4),确保缓存高效利用。net.maxIncomingConnections(默认10000,可根据并发需求调整)和net.port(默认27017,可改为其他端口),适应高并发连接。replication.replSetName中设置副本集名称(如rs0),提高数据冗余和读取性能(读操作可分发到secondary节点)。_id、name、age)创建单字段索引(如db.collection.createIndex({ field: 1 })),加速查询。{ name: 1, age: 1 }),创建复合索引,避免多次索引扫描。db.collection.reIndex()重建碎片化索引,减少查询开销;通过db.collection.stats()监控索引大小和碎片率。explain("executionStats")查看执行计划,确认winningPlan使用了索引)。db.collection.find({}, { name: 1, age: 1 })),只返回必要字段,减少网络传输量。db.collection.aggregate([{ $group: { _id: "$field", count: { $sum: 1 } } }])),替代多次查询。rs.initiate()初始化副本集(如rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "mongo1:27017" }, { _id: 1, host: "mongo2:27017" }] })),提高数据可用性和读取性能(secondary节点可处理读请求)。sh.enableSharding("database")和sh.shardCollection("database.collection", { shardKey: 1 }))将数据分散到多个服务器,提升读写性能和可扩展性。mongostat监控每秒查询次数、插入/更新/删除操作数;使用mongotop查看各集合的读写时间,定位热点表。slowms参数(如operationProfiling.slowOpThresholdMs: 100),记录执行时间超过阈值的查询,通过db.setProfilingLevel(2)开启详细日志,分析性能瓶颈。poolSize),减少连接建立和关闭的开销,提高并发处理能力。insertMany)、更新(updateMany)和删除(deleteMany)操作,减少网络往返次数,提升效率。mongodump),及时升级MongoDB版本(通过apt更新),获取性能改进和bug修复。