1. 程式人生 > >MongoDB---效能優化---(1)

MongoDB---效能優化---(1)

MONGODB資料架構


升級解決.方案

問題發現 

應用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天。