【五】MongoDB管理之生產環境說明


下面詳細說明影響mongodb的系統配置,尤其在生產環境上。

1、生產環境推薦的平台

  • Amazon Linux
  • Debian 7.1
  • Red Hat / CentOS 6.2+
  • SLES 11+
  • Ubuntu LTS 12.04
  • Ubuntu LTS 14.04
  • Windows Server 2012 & 2012 R2

推薦使用官方最新的64位發行版本。

2、網絡配置

1)使用可信任的網絡環境

MongoDB總是運行在可信任的網絡環境中,通過網絡規則設置避免所有不知來歷的機器訪問。MongoDB應該部署在獨立的環境中,這個環境僅僅能被應用server,監控服務,mongodb組件等訪問。

2)禁用HTTP接口

3、連接池管理

為了避免連接超載,確保客戶端維護合理的連接池大小,調整連接池的大小以適應具體案例,一般而言,開始連接池大小設置為數據庫請求並發數的110-115%。

4、硬件配置說明

MongoDB對於服務器的硬件有一定的需求和限制。

1)分配充足的CPU和RAM

  • 對於MMAPv1存儲引擎:由於它本身的並發模型設計,MMAPv1並不需要更多的CPU核心,所以,增加CPU核心在一定程度上有所幫助但是性能提升並不顯著。增加RAM能夠幫助減少發生分頁錯誤頻率。
  • 對於WiredTiger存儲引擎:它是為多線程設計,能夠利用很多CPU核心,所以,活躍線程總數對應於CPU的數量能夠提升性能。隨着活躍並發操作數量增加到系統CPU個數,系統吞吐量增加;隨着活躍並發操作數超過系統CPU的個數闕值,系統吞吐量下降;

這個系統闕值數依賴於你的應用程序,你可以通過實驗測量系統吞吐量來決定最優的活躍並發數。mongostat工具的輸出能夠提供活躍並發的讀寫數據。在v3.2版本中,默認使用WiredTiger存儲引擎,MongoDB可以利用操作系統文件系統cache和WiredTiger引擎的cache。WiredTiger v3.2 cache默認設置為1GB或者內存的60%,取其中大的。當然,我們可以自己設置:一般而言,服務器物理內存10G以下的,比較合理的設置值是小於等於3G;對於物理內存大於10G的,可以大於3G。在v3.0版本中,cache默認為1G或物理內存的一半,取其中大的。

注意:storage.wiredTiger.engineConfig.cacheSizeGB僅僅限制WiredTiger cache大小,不會限制mongd服務占用內存的總量。WiredTiger cache僅僅是mongodb使用內存的一個組件,除此之外,mongodb還可以利用操作系統中文件系統cache。

如果一台節點上只有一個mongodb實例,那么建議使用默認的WiredTiger cache即可;如果一台節點上有多個實例,那么你需要考慮減少WriedTiger cache的大小以滿足其他實例的需要。

2)使用SSDs(固態硬盤)

MongoDB在使用SATA SSDs上有很好的性價比。如果經濟條件允許,建議使用SSDs。SSDs在隨機IO操作上的性能表現完全適應於MMAPv1存儲引擎的更新模型。通過使用SSDs和增加內存能夠提升I/O的吞吐量

3)NUMA設置

MongoDB運行在NUMA系統上,能夠導致一些操作問題,如間斷性性能低下、高系統進程占用等。所以需要對內存交叉策略進行配置以使主機是non-NUMA狀態,MongoDB在啟動時就會對系統的NUMA進行檢查,如果NUMA配置降低性能了就會進行警告提示。

  • windows系統上NUMA配置

內存策略通過BIOS配置,具體請參考系統資料

  • liunx系統上NUMA配置
numactl --interleave=all <path>   #path是mongod路徑
echo 0 > /proc/sys/vm/zone_reclaim_mode

4)磁盤存儲系統

  • swap分配:分配系統swap空間能夠避免內存爭用、預防系統出現OOM殺死mongod進程等問題。對於MMAPv1存儲引擎,mongodb不會在swap空間中存儲數據。(windows環境另算);對於WiredTiger存儲引擎,mongodb可能會在swap中存儲數據。
  • RAID:建議使用raid10,其他不建議。
  • 文件系統類型選擇:對於MMAPv1存儲引擎,建議xfs或ext4,如果可能,優先選擇xfs。對於WiredTiger存儲引擎,強烈推薦使用XFS文件系統,因為能夠避免使用ext4產生的性能問題。一般而言如果你用xfs文件系統,操作系統內核版本應該在2.6.25及以后;如果使用ext4文件系統,建議內核版本2.6.23及以后。

5、其他建議配置(liunx)

  • 對於存儲數據庫文件的磁盤卷,建議關閉atime
vim /etc/fstab
#在存儲數據庫文件的磁盤卷設備上default后面加上noatime,nodiratime
 UUID=98a683e4-ab44-4fe4-85de-7808ee5f167d /data                   xfs     defaults,noatime,nodiratime        1 2
  • 設置unlimit值大於20000
  • 禁用Transparent Huge Pages
  • 禁用NUMA
  • 設置SELinux on Red Hat
  • 如果使用分片集群,別忘了使用NTP同步主機的時間,這個是特別重要的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM