MongoDB集羣,解決數據不分片問題

 

http://blog.csdn.net/fengyily/article/details/7388926 中配置的MongoDB集羣,進行數據插入,並查看集合狀態時發現兩個問題:

 

1、集合中的數據不會分片。

    配置了shard1/shard2/shard3三個分片,但數據只會集中在集合所在的分片上。

 

2、數據插入效率低下。

    採用for循環批量插入20萬數據時,發現每秒只能插入100,200條,無法忍受的性能。

 

 

經過分析mongos的日誌mongos.log,發現其中一臺存在以下日誌信息:

Thu Mar 29 01:05:18 [initandlisten] connection accepted from 192.168.1.190:52865 #345
Thu Mar 29 01:05:18 [conn345] authenticate: { authenticate: 1, nonce: "c56c219dd93277e1", user: "__system", key: "f85f00f59c9979af52c8e2f3a854ac9e" }
Thu Mar 29 01:05:46 [conn344] end connection 192.168.1.191:38281
Thu Mar 29 01:05:46 [initandlisten] connection accepted from 192.168.1.191:38289 #346
Thu Mar 29 01:05:46 [conn346] authenticate: { authenticate: 1, nonce: "2c2e6e5a47d9465c", user: "__system", key: "ef913dd4bd6748603842ba313c2437fe" }
Thu Mar 29 01:05:48 [conn345] end connection 192.168.1.190:52865
Thu Mar 29 01:05:48 [initandlisten] connection accepted from 192.168.1.190:52874 #347
Thu Mar 29 01:05:48 [conn347] authenticate: { authenticate: 1, nonce: "a6a21ef57b4e8123", user: "__system", key: "8057fff6fb913bfda00aece41ad44b71" }

 

其中還有一臺的mongos.log提示時間不一致。

通過將三臺mongodb服務器的時間同步後,再進行測試一切恢復正常。以上兩個問題都得到有效的解決。

 

這也許是mongodb存在的一個小BUG,當各分片服務器時間不一致時,會導致數據分片與插入效率。這也說明,MongoDB數據庫數據分片機制與服務器時間相關。具體得進一步分析源碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章