2016年3月22日 星期二

[mongo] 伺服器系統限制設定sysctl.conf

我測試很久

覺得mongodb cluster系統設定這樣設最安全

Performance也最好

如果未來有人不小心看到這篇也可以給我建議


fs.file-max = 800000

# Default Socket Receive Buffer
net.core.rmem_default = 1073741824

# Maximum Socket Receive Buffer
net.core.rmem_max = 1073741824

# Default Socket Send Buffer
net.core.wmem_default = 1073741824

# Maximum Socket Send Buffer
net.core.wmem_max = 1073741824

#physical memory and swap limit
vm.swappiness=0
vm.overcommit_memory=2
vm.overcommit_ratio=90


說明:
第1行應該不用解釋了,就是檔案存取限制

其他關於網路的設定對mongodb來說只要設定這4個就好了
之前MIS和OP給的建議根本是shit
他們竟然拿網頁需要大量responses和低alive time的設定給mongo用

光看設定就知道不行(不過我還是有試試看)
mongo又不是開放給外面人大量隨便打一打
重點還是要能夠把資料完全吃下來
穩定的連線才是重點
因此設定上是把buffer大開才能將效能拉到最高
目前針對單台處理效能可以吃下的量我都開到1G

另外memory就是設計重點,如果記憶體處理不好吃到swap就會變得很慢
不管用什麼都慢,因為記憶體就是不斷的寫入和讀取硬碟
所以就借用AWS的設定,就是不用swap
原本我是嘗試vm.overcommit_memory設定為0 (參考別人網路上的設定)
就是有記憶體就會配置,但是OS真的就會把記憶體給真的用光光
即使用光之後會給你吃swap但就會慢下來,違背原本設定想法
因此還是必須設定為 2, 根據vm.overcommit_ratio的比例來分配
但是vm.overcommit_ratio又會以phy+swap為準
所以就必須把vm.swappiness設為0
讓vm.overcommit_ratio直接就是以physical為主的比例
這樣就可以只用swap又讓記憶體消耗為90%比例
如果遇到高壓力流量攻擊,就還會有10%給buffer和緩衝消化使用
怎樣打都不會用光資源而鎖死

沒有留言:

張貼留言