MongoDB---效能優化---(1)
升級解決.方案
問題發現
應用server突然湧入的使用者人數,造成server響應變慢
檢查server,發現每次響應速度極慢,為30ops
檢查過程
.發現數據庫查詢緩慢
.檢查索引
.檢查記憶體佔.用量
.檢查TCP連線
對照測試1
.硬體配置:
.client:
.阿.裡雲,2cpu。2g記憶體。windows2008
.服務端:
.阿.裡雲,router:4cpu,4g記憶體,centos6.5 64位
.阿.裡雲,mongod:2cpu,8g記憶體,centos6.5 64位
.1.對router進.行測試。每秒200qps。
.2.對mongod進.行測試。每秒500qps。
.小結:使.用sharding架構,查詢會.比直接對單臺mongo查詢慢。
對照測試2
.硬體配置:
.client:
.阿.裡雲,2cpu,2.5g記憶體。windows2008
.阿.裡雲,2cpu,2.0g記憶體,windows2008
.服務端:
.阿.裡雲。mongod:2cpu,2.5g記憶體。windows2008
.1.在本地2cpu。2.5g記憶體,windows2008進.行測試,查詢速度達到3000qps,甚至有時候能突破5000qps。
.2.在2cpu,2.0g記憶體。windows2008對mongod進.行測試。查詢速度500qps。
.小結:tcp對..網路有非常.大的影響。
對照測試3
.硬體配置:
.client:
.物理機。2cpu。4.0g記憶體,windows2008
.服務端:
.物理機,mongod:2cpu,4.0g記憶體,centos6.5 64位
.物理機。router:2cpu,4.0g記憶體。centos6.5 64位
.1.對mongod進.行測試,查詢速度1000qps。
.2.對router進.行測試,查詢速度500qps。
.小結:阿.裡雲存在.一定的限制,使得速度有上限。
對照測試4
.硬體配置:
.client:
. ucloud,2cpu,4.0g記憶體。windows2008
.服務端:
. ucloud。mongod:2cpu。4.0g記憶體,centos6.5 64位
. ucloud,router:2cpu。4.0g記憶體。centos6.5 64位
.1.對mongod進.行測試。查詢速度2000qps。
.2.對router進.行測試。查詢速度1000qps。
.小結:ucloud.比阿.裡雲的機器效能好。
對照測試5
.硬體配置:
.client:
. ucloud。16cpu,64.0g記憶體。windows2008
.服務端:
. ucloud。mongod:16cpu,64.0g記憶體,centos6.5 64位
. ucloud。router:16cpu。64.0g記憶體。centos6.5 64位
.1.對mongod進.行測試,查詢速度13000qps。
.2.對router進.行測試,查詢速度10000qps。
.小結:至此最終找到問題根結。clientcpu核數決定mongodb查詢速度。
結論
1.阿.裡雲的雲主機有做某些限制,導致.不管怎樣設定系統,資料庫的配置,都.無法突破.一個數量級的qps。
2.clientcpu核數決定mongodb查詢速度。
3.tcp的限制通過.走內..網能夠避免。
4.linux作業系統勝過windows。
因此mongodb架構在linux上.比架構在windows上更好。
最新架構
最新架構
極限效能測試
.以上.面最新架構進.行測試:
.開啟4個iisclient,同一時候對router進.行查詢,
router能夠達到每秒20000次查詢。換成業務對照,即每秒能夠應付2000個人。
效能結論
.為了保證線上業務的正常運.行,資料庫所在的server須要8cpu,16g記憶體。
.為了保證備份的完整性。因此對slave資料庫進行備份。對router進行備份。備份保留30天。