MongoDB在Linux下常用優化設定

chenfeng發表於2015-12-19
** 關閉資料庫檔案的 atime

禁止系統對檔案的訪問時間更新會有效提高檔案讀取的效能。這個可以通過在 /etc/fstab 檔案中增加 noatime 引數來實現。例如:

/dev/xvdb /data ext4 noatime 0 0

修改完檔案後重新 mount就可以:

# mount -o remount /data

** 提高預設檔案描述符和程式/執行緒數限制

Linux預設的檔案描述符數和最大程式數對於MongoDB來說一般會太低。建議把這個數值設為64000。因為MongoDB伺服器對每一個資料庫檔案以及每一個客戶端連線都需要用到一個檔案描述符。如果這個數字太小的話在大規模併發操作情況下可能會出錯或無法響應。 你可以通過以下命令來修改這些值:

ulimit -n 64000
ulimit -u 64000

** 禁止 NUMA

在一個使用NUMA技術的多處理器Linux 系統上,你應該禁止NUMA的使用。MongoDB在NUMA環境下執行效能有時候會可能變慢,特別是在程式負載很高的情況下。

** 預讀值(readahead)設定

預讀值是檔案作業系統的一個優化手段,大致就是在程式請求讀取一個頁面的時候,檔案系統會同時讀取下面的幾個頁面並返回。這原因是因為很多時候IO最費時的磁碟尋道。通過預讀,系統可以提前把緊接著的資料同時返回。假設程式是在做一個連續讀的操作,那麼這樣可以節省很多磁碟尋道時間。

MongoDB很多時候會做隨機訪問。對於隨機訪問,這個預讀值應該設定的較小為好.一般來說32是一個不錯的選擇。

你可以使用下述命令來顯示當前系統的預讀值:

sudo blockdev –report

要更改預讀值,可以用以下命令:

sudo blockdev –setra 32

<device> 換成合適的儲存裝置。

** 使用NTP時間伺服器

在使用MongoDB複製集或者分片叢集的時候,注意一定要使用NTP時間伺服器。這樣可以保證MongoDB叢集成原則之間正確同步。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-1874906/,如需轉載,請註明出處,否則將追究法律責任。

相關文章