选择高性能文件系统
-n size=64k(优化元数据块大小),-d agcount=16(增加并行写入组)。-b 4096(与MongoDB默认页大小对齐)。挂载选项优化
noatime,nodiratime(减少元数据写入),barrier=0(提升SSD写入性能,需确保硬件支持)。allocsize=512m(减少碎片),logbufs=8(增大日志缓冲区)。内核参数调优
deadline调度器(减少延迟),机械盘可考虑noop。vm.dirty_ratio=10,vm.dirty_background_ratio=5(控制脏页写入比例)。vm.swappiness=5(降低swap使用,优先利用内存)。echo never > /sys/kernel/mm/transparent_hugepage/enabled(避免内存分配延迟)。缓存与内存管理
storage.wiredTiger.engineConfig.cacheSizeGB为系统内存的50%-75%,避免过度占用内存。storage.journal.enabled(确保数据一致性),合理设置journal.commitIntervalMs(默认100ms,高负载可降低)。分片与副本集策略
数据模型优化
索引设计
db.collection.createIndex({field1: 1, field2: 1}))。{status: 1, create_time: -1})。db.collection.reIndex()重建碎片化索引,监控索引命中率(通过db.collection.stats())。查询语句优化
projection指定返回字段,避免SELECT *。limit()限制结果集大小,分页查询优先使用skip()+limit()或cursor。explain()分析查询计划,确保索引被命中。存储硬件选择
系统资源监控
iostat、vmstat监控磁盘I/O和内存使用,及时发现瓶颈。mongostat、mongotop分析数据库负载,定位慢查询或资源占用异常。压缩与归档
storage.wiredTiger.engineConfig.compression: snappy),减少磁盘占用。批量操作与异步处理
bulkWrite()批量插入/更新,减少网络往返和事务开销。参考来源: