MongoDB 从节点 延迟的测试
生活随笔
收集整理的這篇文章主要介紹了
MongoDB 从节点 延迟的测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于從節點 延遲的測試:
使用手工設置延遲時間的方法,在兩個數據庫中測試了主從 寫/讀的延遲時間,
主從節點的延遲時間大約 在 0.3秒 。
這個測試比我想象中的要大很多,開始以為延遲也就在10 -30 毫秒左右
或許這個測試只能說: ”延遲0.3秒后,能在從節點中查詢到所插入的數據比例越大“ 更貼切點。
如果是插入后要即刻返回數據的,暫時只能指定從主節點讀取數據。
****************************************************************************************************
??? 測試1: 循環N次,
??????????? 1. 主節點插入_id=i,
??????????? 2.設置延遲時間的長短,
??????????? 3.從節點查詢_id=i ,顯示插入的時間。
??? 測試庫(1主,1從,1仲裁,版本為2.6):
?
??????? 1.不設置延遲的情況下,從節點能查詢到數據的???????? 78/1999
??????? 2.查詢時間向后延遲0.1秒,從節點能查詢到數據的??? 360/499
??????? 3.查詢時間向后延遲0.2秒,從節點能查詢到數據的??? 449/499
??????? 4.查詢時間向后延遲0.3秒,從節點能查詢到數據的??? 473/499
?????? ?
??? 另外一套數據庫環境?? (1主4從,版本為2.6):
???
??????? 1.不設置延遲的情況下,從節點能查詢到數據的???????? 45/999
??????? 2.查詢時間向后延遲0.1秒,從節點能查詢到數據的??? 433/499
??????? 3.查詢時間向后延遲0.2秒,從節點能查詢到數據的??? 492/499
??????? 4.查詢時間向后延遲0.3秒,從節點能查詢到數據的??? 498/499
?? ?
(以上只測試了單條插入情況,如果主節點更新多條記錄,從節點的延遲可能會更大,因為多條記錄的修改,在從節點是做為多條記錄各自處理的)
?? ?測試2:考慮到測試1可能存在鎖爭用問題:在主庫循環插入數據后,因為日志是同步同步到從節點,而從節點再重現數據時,可能存在鎖問題。
?? ??? ??? ?把測試1中的時間延遲0.X 秒,修改為同庫其它表插入數據后,再回來查看測試表中的數據是否已同步到從節點。
?? ??? ??? ?測試下來看到當其它表數據插入越多(各表插入數據時間消耗只有幾毫秒)。從節點數據重現數據越慢。
?? ??? ??? ?(測試庫中進行測試)
--------------------------------------------------------------------------------------------
測試1 python 腳本:
#primarytst_conn = pymongo.MongoClient(['mongodb://10.0.0.48:27017'])tst_db=tst_conn.test#slavetst_conn2 = pymongo.MongoClient(['mongodb://10.0.0.67:27017'])tst_db2 = tst_conn2.testfor i in range(1,500):#primary insert datatst_db.test01.insert({"_id":i,"date":datetime.datetime.now()})print 'i=%d'%i,datetime.datetime.now()#sleeptime.sleep(0.1)#slave select datacur = tst_db2.test01.find({"_id":i})for row in cur:print 'select secoundary data: ',row["_id"],row["date"]
測試2 腳本:
?? ??? ?#time.sleep(0.1)? 修改為循環在其它表插入一條數據,當循環越大時,從庫數據重現越慢。
?? ??? ?for j in range(2,20):
?? ??? ??? ??? ?tst_db.get_collection('test%s'%str(j).zfill(2)).insert({"_id":i,"date":datetime.datetime.now()})
使用手工設置延遲時間的方法,在兩個數據庫中測試了主從 寫/讀的延遲時間,
主從節點的延遲時間大約 在 0.3秒 。
這個測試比我想象中的要大很多,開始以為延遲也就在10 -30 毫秒左右
或許這個測試只能說: ”延遲0.3秒后,能在從節點中查詢到所插入的數據比例越大“ 更貼切點。
如果是插入后要即刻返回數據的,暫時只能指定從主節點讀取數據。
****************************************************************************************************
??? 測試1: 循環N次,
??????????? 1. 主節點插入_id=i,
??????????? 2.設置延遲時間的長短,
??????????? 3.從節點查詢_id=i ,顯示插入的時間。
??? 測試庫(1主,1從,1仲裁,版本為2.6):
?
??????? 1.不設置延遲的情況下,從節點能查詢到數據的???????? 78/1999
??????? 2.查詢時間向后延遲0.1秒,從節點能查詢到數據的??? 360/499
??????? 3.查詢時間向后延遲0.2秒,從節點能查詢到數據的??? 449/499
??????? 4.查詢時間向后延遲0.3秒,從節點能查詢到數據的??? 473/499
?????? ?
??? 另外一套數據庫環境?? (1主4從,版本為2.6):
???
??????? 1.不設置延遲的情況下,從節點能查詢到數據的???????? 45/999
??????? 2.查詢時間向后延遲0.1秒,從節點能查詢到數據的??? 433/499
??????? 3.查詢時間向后延遲0.2秒,從節點能查詢到數據的??? 492/499
??????? 4.查詢時間向后延遲0.3秒,從節點能查詢到數據的??? 498/499
?? ?
??? 3.2.3 版本集群環境測試(1p+2s)
?????? 1.不設置延遲的情況下,從節點能查詢到數據的???????? 281/500
??????? 2.查詢時間向后延遲0.1秒,從節點能查詢到數據的??? 495/500
?????? 3.0以上的版本,性能確實好了很多了。
(以上只測試了單條插入情況,如果主節點更新多條記錄,從節點的延遲可能會更大,因為多條記錄的修改,在從節點是做為多條記錄各自處理的)
?? ?測試2:考慮到測試1可能存在鎖爭用問題:在主庫循環插入數據后,因為日志是同步同步到從節點,而從節點再重現數據時,可能存在鎖問題。
?? ??? ??? ?把測試1中的時間延遲0.X 秒,修改為同庫其它表插入數據后,再回來查看測試表中的數據是否已同步到從節點。
?? ??? ??? ?測試下來看到當其它表數據插入越多(各表插入數據時間消耗只有幾毫秒)。從節點數據重現數據越慢。
?? ??? ??? ?(測試庫中進行測試)
--------------------------------------------------------------------------------------------
測試1 python 腳本:
#primarytst_conn = pymongo.MongoClient(['mongodb://10.0.0.48:27017'])tst_db=tst_conn.test#slavetst_conn2 = pymongo.MongoClient(['mongodb://10.0.0.67:27017'])tst_db2 = tst_conn2.testfor i in range(1,500):#primary insert datatst_db.test01.insert({"_id":i,"date":datetime.datetime.now()})print 'i=%d'%i,datetime.datetime.now()#sleeptime.sleep(0.1)#slave select datacur = tst_db2.test01.find({"_id":i})for row in cur:print 'select secoundary data: ',row["_id"],row["date"]
測試2 腳本:
?? ??? ?#time.sleep(0.1)? 修改為循環在其它表插入一條數據,當循環越大時,從庫數據重現越慢。
?? ??? ?for j in range(2,20):
?? ??? ??? ??? ?tst_db.get_collection('test%s'%str(j).zfill(2)).insert({"_id":i,"date":datetime.datetime.now()})
總結
以上是生活随笔為你收集整理的MongoDB 从节点 延迟的测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MONGODB 权限认证
- 下一篇: 集群节点间的延迟问题