好久沒上文章了...先上篇一先!
硬碟選擇
1. 硬碟有條件盡量選擇SAS盤,不差錢的可以選擇SSD、funsion-io之類的,再者。也可以根據當初應用環境選擇性的考慮下SATA盤
2. RAID方面可以選擇RAID10和RAID5,推薦選用RAID10,它即有速度也相對安全,RAID5的話適合讀比較多的業務。但是還是推薦用RAID10,用空間換取時間。RAID5在一塊盤出現問題的情況下效能極速下降!
3. RAID卡的選擇,盡量選用大牌子的RAID卡,這樣減少出現各種各樣的RAID卡故障。還有就是RAID緩衝要選擇相對比較大的!
記憶體選擇
現在記憶體是白菜價的時代,現在一般筆記本上都到16G了,沒有哪個公司會在記憶體上糾結吧,理論上任何伺服器是記憶體越大越好,尤其是資料庫伺服器,至少16G以上。
CPU選擇
選用64位的CPU這個不用說了,再者就是緩衝要大,CPU要多核心多線程,但是有些資料庫對多核CPU要求不是很嚴格,比如:MongoDB,MongoDB對記憶體要求很高!MySQL的InnoDB引擎則對CPU利用率比較高,盡量選用強悍點的CPU!
系統選擇
1. 系統肯定是64位系統,可以是linux也可以是unix,linux有很多選擇,常用的就是CentOS Ubuntu竺,Unix就可以選擇開源的FreeBSD
2. 核心選擇,推薦2.6以上的核心,也不用太高
3. 檔案系統的選擇,有以下幾種選擇:EXT3/EXT4/XFS,EXT4和XFS更適合資料庫,其實XFS更適合作為MySQL資料庫的檔案系統,可以在EXT3的基礎上效能增加1.5倍。
其它方面:
網卡至少選用千M,萬M更好,沒萬M也可以做bonding.
總之,針對不同的應用選擇不的機器類型,尤其作為資料,資料庫層盡量選用相對好的伺服器。
下面以MongoDB伺服器的硬體選擇作個簡單的說明:
1. 相關硬體層級
² 網路最低為千M網卡,有萬M更好!
² 大記憶體可以根據索引大小來設定記憶體,原則上是記憶體越大越好。)
² 雙核高速CPU,mongodb執行個體沒必要搞多核,因為mongodb對CPU多核支援不是很好,但是作為mongos路由伺服器對CPU資源消耗比較多!
² mongodb執行個體有獨立的掛載盤用於給mongodb存放資料以隔離io的頻繁操作。
² 磁碟可以考慮用RAID10或RAID5,資金允許可以考慮用SSD來儲存
2. 系統層級
² 採用64位系統支援更多的記憶體和讓支援更大的儲存資料
² 禁止檔案系統更新讀取次數統計(修改/etc/fstab檔案)
mount -o remount,noatime /data
² 如果儲存的資料中有大的檔案,建議使用ext4/xfs這樣的檔案系統
這裡可以考慮把資料目錄和記錄檔及相關的中介軟體目錄(如果有的話)分開來,隔離IO
² ulimit設定
設定最大開啟檔案描述符
cat /etc/security/limits.conf
soft nofile 102400
hard nofile 102400
增加系統進程數線程)的限制-->max user processes
centos 5與centos 6不同的是,只要在/etc/security/limits.conf 設定了root soft nofile 102400 和root hard nofile102400,對應的uilmit -u 後的結果就會是102400,這裡需要注意區別!
因此cetos 6還必須這樣設定: sed -i 's/1024.*/102400/' /etc/security/limits.d/90-nproc.conf
² TCP串連記憶體最佳化
cat /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestsmps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
net.ipv4.tcp_mem = 94500000 91500000 92700000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_fin_timeout = 30
直接生效
/sbin/sysctl -p
對於伺服器多核問題可以在啟動時加入啟動參數:
numactl --interleave=all
啟動執行個體:umactl --interleave=all /opt/mongodb/bin/mongod -shardsvr -replSet shard1 -port 27021 -dbpath /data0/mongodb/db/shard13 -oplogSize 1000 -logpath /data1/mongodb/logs/shard13.log -logappend --maxConns 10000 --quiet -fork --directoryperdb
最後一點要說明的是,MongoDB的版本推薦選用2.2.0相對比較高的穩定版本,功能上更加完善!還有一點是Linux系統的核心上的選擇對MongoDB有一定的影響!
可以本文不是規範也不一定適合每一位讀者,根據實際情況參考即可!
本文出自 “->” 部落格,請務必保留此出處http://opsmysql.blog.51cto.com/2238445/1083431