標籤:leave ora 分區 ram 儲存引擎 page mongod ati 進程
下面詳細說明影響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配置降低效能了就會進行警告提示。
記憶體策略通過BIOS配置,具體請參考系統資料
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)
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同步主機的時間,這個是特別重要的。
【五】MongoDB管理之生產環境說明