以下是Ubuntu下MongoDB的性能調優技巧:
硬件與系統優化
- 增加內存:確保服務器有足夠內存,建議將可用內存的70%-80%分配給MongoDB。
- 使用SSD:替換傳統HDD,提升讀寫速度。
- 關閉非必要服務:如防火墻、SELinux等,減少系統負載。
MongoDB配置優化
- 調整緩存大小:在
/etc/mongod.conf中設置storage.wiredTiger.engineConfig.cacheSizeGB(建議為物理內存的50%-80%)。
- 開啟操作分析:通過
operationProfiling監控慢查詢(閾值可設為100ms)。
- 優化網絡參數:調整
net.maxIncomingConnections和net.maxOutgoingConnections以適應高并發。
索引優化
- 精準創建索引:僅為高頻查詢字段創建索引,避免冗余。
- 使用復合索引:組合多個查詢字段,減少索引數量。
- 覆蓋索引:設計索引包含查詢所需字段,避免回表查詢。
- 定期維護索引:使用
reIndex()重建索引,刪除不再需要的索引。
查詢與數據模型優化
- 優化查詢語句:使用
explain()分析查詢計劃,避免全表掃描。
- 分頁與投影:用
skip()/limit()分頁,通過投影限制返回字段。
- 分片與副本集:大數據量時使用分片(Sharding)分散負載,副本集(Replica Set)提升可用性。
監控與維護
- 自帶工具監控:使用
mongostat和mongotop實時監控性能。
- 第三方工具:如Prometheus+Grafana或Percona PMM,進行詳細性能分析。
- 定期備份:通過
mongodump/mongorestore備份數據,防止丟失。
其他高級優化
- 調整文件系統參數:掛載時添加
noatime,減少文件訪問時間更新開銷。
- 禁用NUMA:在BIOS中關閉NUMA,避免內存訪問延遲。
- 升級版本:使用最新穩定版,獲取性能優化和bug修復。
注意:調優前需備份數據,優先在測試環境驗證效果,避免影響生產環境。
參考來源: