一、硬件与操作系统优化
- 使用SSD:替换传统硬盘,提升I/O性能。
- 关闭传输页缓存:减少磁盘I/O压力。
- 优化内核参数:调整
Max processes/files,关闭透明大页(THP),修改磁盘调度算法。
二、MongoDB配置优化
- 调整WiredTiger缓存:在
/etc/mongod.conf中设置cacheSizeGB(建议为物理内存的50%-70%)。
- 优化日志与oplog:启用日志轮转,合理设置
oplogSizeMB(根据数据量调整)。
- 网络与连接优化:增加
maxIncomingConnections,启用tcpNoDelay。
三、数据库设计与查询优化
- 合理设计Schema:避免过度规范化,适当冗余数据减少JOIN。
- 索引优化:为高频查询字段创建索引,使用复合索引优化多字段查询,定期清理无用索引。
- 查询语句优化:使用投影限制返回字段,避免全表扫描,利用
explain()分析执行计划。
四、分片与复制集策略(大规模场景)
- 分片键选择:选择高基数字段(如用户ID)作为分片键,避免数据倾斜。
- 副本集读写分离:从节点处理读请求,主节点专注写入。
五、监控与维护
- 使用监控工具:
mongostat、mongotop或第三方工具(如PMM)监控性能。
- 定期维护:备份数据,清理日志,升级到最新版本。
注意:优化前需在测试环境验证,根据实际负载调整参数。