本文是翻譯MongoDB Manuel中的MongoDB Production Notes一節內容。這節內容重點關注生產環境中影響效能和可靠性的各種注意事項,值得正在部署MongoDB的工作者們關注。本文詳細描述了影響MongoDB,特別是生產環境的關鍵系統配置。以下是本文。
安裝包
確保你安裝了最新的穩定版本。這是瞭解最新版本的最佳場所,即使你稍後選擇從包管理器安裝。
生產環境始終使用64位版本。32位版本是為測試和部署環境準備的,不適於生產環境部署,因為它只能儲存2GB以內的資料。瞭解更多內容請查看32位限制。
32位版本的存在是為滿足非正式環境的使用情境。
作業系統
MongoDB發行版目前可用於Max OS X,Linux,Windows Server 2008 R2 64位版,Windows 7(32位及64位版),Windows Vista,以及Solaris平台。
注意:在可能的情況下,MongoDB使用GNU C庫(glibc)。MongoDB要求版本至少在glibc-2.12-1.2.el6以避免早先版本一個已知的Bug。為了效果最佳請使用至少2.13版本。
並發
早先版本的MongoDB中所有寫操作都集中使用執行個體中的唯一一個讀寫鎖。從2.2開始,每個資料庫開始具有一個獨立的讀寫鎖,這使得一個資料庫可以並發讀,同時每個資料庫有了獨立的寫控制。查看並發頁瞭解更多資訊。
日誌
MongoDB使用預先寫日誌到磁碟日誌的辦法來保證MongoDB能夠快速從崩潰或其他嚴重錯誤中恢複寫操作。
為了保證mongod能夠從崩潰中恢複並繼續處於可用狀態,你應該啟用日誌。查看日誌頁以瞭解更多內容。
網路
使用可信任網路環境
始終在可信任環境中運行MongoDB,並啟用網路原則禁止未知機器,系統和網路訪問。猶如依賴網路訪問的任何一個敏感系統一樣,你的MongoDB環境應該只為指定的,需要訪問的系統開發,例如應用程式伺服器,監控服務及其他MongoDB組件。
注意:預設情況下認證功能未開啟,mongod推斷自己處於可信任環境中。如有必要你可以啟用安全認證模式。
查看安全章節的內容以瞭解更多資訊。特別是:
●配置選項
●防火牆
●為MongoDB配置Linux iptables防火牆
●為MongoDB配置Windows netsh防火牆
對於Windows使用者,在Windows上部署MongoDB時考慮Windows Server TCP技術文章中的內容。
串連池
為避免單個mongod或mongos執行個體串連資源越負荷,請確保用戶端維護了合理數量的串連池配置。
connPoolStats資料庫命令能夠返回一個分區叢集裡mongos和mongod執行個體中當前資料庫開啟串連的資訊。
硬體考量
MongoDB的設計是基於相容大多數硬體考慮,幾乎沒有特別的要求或限制。MongoDB的核心組件能夠運行於小端位元組優先的硬體,主要是x86/x86_64處理器上。用戶端類庫(例如驅動)在大端優先或小端優先系統上都可以運行。
硬體需求和限制
能夠讓MongoDB最有效率地啟動並執行硬體應該包含以下特性:
分配了足夠的記憶體和CPU
猶如對於所有軟體一樣,更多的記憶體和更快的CPU時鐘頻率對於效能很重要。
基本上,資料庫並非受限於CPU。因此,增加核心數量雖然有協助,但不會提供顯著的回報。
使用固態硬碟(SSD)
MongoDB使用SATA SSD能得到很好的效果和很好的性價比。
在足夠經濟的情況下請使用SSD。傳統硬碟也可能很有效率,但SSD對於隨機IO訪問的良好支援更符合mongod的資料更新模型。
傳統硬碟通常也是個好的選擇,因為使用更昂貴的硬碟來提高隨機IO效能並不是那麼有效(只能是每次2倍)。使用SSD或增加RAM的容量可能對於提升IO更有效率。
避免使用遠程檔案系統
遠程檔案儲存體系統可能對MongoDB造成效能問題。查看遠程檔案系統瞭解