將 journalCompressor 更改為 none - 不是預設 snappy
引用來自ObjectRocket 支持
嗨,費多爾!該
journalCompressor
設置專門與日誌文件相關。日誌通常不會被壓縮,因為在將數據從 WiredTiger 記憶體記憶體刷新到磁碟時,壓縮它們會導致額外的延遲。這種延遲會滲透到寫入問題。journalCompressor none
是我們配置中的預設值。ObjectRocket 似乎對 DBaaS 有所了解
ObjectRocket是一家位於德克薩斯州奧斯汀的雲數據庫 (DBaaS) 公司,專注於 NoSQL 數據儲存,包括 MongoDB 和 Redis。2013年被Rackspace收購
你覺得
journalCompressor
不活潑怎麼辦?這是 DBaaS 提供商的有效配置並且最適合大多數案例嗎?storage: dbPath: "/data/mongodb" journal: enabled: true engine: "wiredTiger" wiredTiger: engineConfig: journalCompressor: none directoryForIndexes: "/indexes/mongodb/" collectionConfig: blockCompressor: snappy indexConfig: prefixCompression: true
你覺得
journalCompressor
不活潑怎麼辦?這是 DBaaS 提供商的有效配置並且最適合大多數案例嗎?一般來說,我會將 MongoDB 設置保留為預設設置,除非已證明變化對您的常見工作負載有益(即通過實際測試和測量)。Snappy 壓縮/解壓縮通常沒有太多成本,而且 I/O 通常比 CPU 更受資源約束。預設設置旨在“最適合大多數案例”,並且在 MongoDB 部署和持續集成測試中得到更廣泛的測試/使用。
WiredTiger 日誌文件的大小限制為 100MB;當達到日誌文件大小限制時,WiredTiger 會創建一個新的日誌文件並將之前的日誌文件同步到磁碟。使用單個日誌文件的預設
journalCompressor
設置snappy
可以包含比不壓縮更多的數據。如果沒有壓縮,將會創建更多的日誌文件,並且會有更多的日誌 I/O。CPU 與 I/O 使用的正確權衡將根據您的部署和工作負載而有所不同。如果您的部署有空閒的 CPU,您還可以考慮測試
zlib
壓縮(期望更好的壓縮但更多的 CPU 使用率)。如果您擔心日誌和數據文件之間的 I/O 爭用,
dbPath
或者希望在日誌寫入是順序而不是隨機的情況下進行更精細的調整,那麼另一種選擇是將日誌目錄符號連結到單獨的掛載點。這種方法可能會影響您的備份策略(例如,如果您依賴文件系統快照),但是由於您已經在使用該directoryForIndexes
選項,我懷疑您已經意識到了這個警告。有關生產部署的更多配置建議,請參閱 MongoDB 手冊中的生產說明。