MongoDB 从节点 延迟的测试
生活随笔
收集整理的這篇文章主要介紹了
MongoDB 从节点 延迟的测试
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
關(guān)于從節(jié)點(diǎn) 延遲的測試:
使用手工設(shè)置延遲時間的方法,在兩個數(shù)據(jù)庫中測試了主從 寫/讀的延遲時間,
主從節(jié)點(diǎn)的延遲時間大約 在 0.3秒 。
這個測試比我想象中的要大很多,開始以為延遲也就在10 -30 毫秒左右
或許這個測試只能說: ”延遲0.3秒后,能在從節(jié)點(diǎn)中查詢到所插入的數(shù)據(jù)比例越大“ 更貼切點(diǎn)。
如果是插入后要即刻返回數(shù)據(jù)的,暫時只能指定從主節(jié)點(diǎn)讀取數(shù)據(jù)。
****************************************************************************************************
??? 測試1: 循環(huán)N次,
??????????? 1. 主節(jié)點(diǎn)插入_id=i,
??????????? 2.設(shè)置延遲時間的長短,
??????????? 3.從節(jié)點(diǎn)查詢_id=i ,顯示插入的時間。
??? 測試庫(1主,1從,1仲裁,版本為2.6):
?
??????? 1.不設(shè)置延遲的情況下,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的???????? 78/1999
??????? 2.查詢時間向后延遲0.1秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 360/499
??????? 3.查詢時間向后延遲0.2秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 449/499
??????? 4.查詢時間向后延遲0.3秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 473/499
?????? ?
??? 另外一套數(shù)據(jù)庫環(huán)境?? (1主4從,版本為2.6):
???
??????? 1.不設(shè)置延遲的情況下,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的???????? 45/999
??????? 2.查詢時間向后延遲0.1秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 433/499
??????? 3.查詢時間向后延遲0.2秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 492/499
??????? 4.查詢時間向后延遲0.3秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 498/499
?? ?
(以上只測試了單條插入情況,如果主節(jié)點(diǎn)更新多條記錄,從節(jié)點(diǎn)的延遲可能會更大,因?yàn)槎鄺l記錄的修改,在從節(jié)點(diǎn)是做為多條記錄各自處理的)
?? ?測試2:考慮到測試1可能存在鎖爭用問題:在主庫循環(huán)插入數(shù)據(jù)后,因?yàn)槿罩臼峭酵降綇墓?jié)點(diǎn),而從節(jié)點(diǎn)再重現(xiàn)數(shù)據(jù)時,可能存在鎖問題。
?? ??? ??? ?把測試1中的時間延遲0.X 秒,修改為同庫其它表插入數(shù)據(jù)后,再回來查看測試表中的數(shù)據(jù)是否已同步到從節(jié)點(diǎn)。
?? ??? ??? ?測試下來看到當(dāng)其它表數(shù)據(jù)插入越多(各表插入數(shù)據(jù)時間消耗只有幾毫秒)。從節(jié)點(diǎn)數(shù)據(jù)重現(xiàn)數(shù)據(jù)越慢。
?? ??? ??? ?(測試庫中進(jìn)行測試)
--------------------------------------------------------------------------------------------
測試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)? 修改為循環(huán)在其它表插入一條數(shù)據(jù),當(dāng)循環(huán)越大時,從庫數(shù)據(jù)重現(xiàn)越慢。
?? ??? ?for j in range(2,20):
?? ??? ??? ??? ?tst_db.get_collection('test%s'%str(j).zfill(2)).insert({"_id":i,"date":datetime.datetime.now()})
使用手工設(shè)置延遲時間的方法,在兩個數(shù)據(jù)庫中測試了主從 寫/讀的延遲時間,
主從節(jié)點(diǎn)的延遲時間大約 在 0.3秒 。
這個測試比我想象中的要大很多,開始以為延遲也就在10 -30 毫秒左右
或許這個測試只能說: ”延遲0.3秒后,能在從節(jié)點(diǎn)中查詢到所插入的數(shù)據(jù)比例越大“ 更貼切點(diǎn)。
如果是插入后要即刻返回數(shù)據(jù)的,暫時只能指定從主節(jié)點(diǎn)讀取數(shù)據(jù)。
****************************************************************************************************
??? 測試1: 循環(huán)N次,
??????????? 1. 主節(jié)點(diǎn)插入_id=i,
??????????? 2.設(shè)置延遲時間的長短,
??????????? 3.從節(jié)點(diǎn)查詢_id=i ,顯示插入的時間。
??? 測試庫(1主,1從,1仲裁,版本為2.6):
?
??????? 1.不設(shè)置延遲的情況下,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的???????? 78/1999
??????? 2.查詢時間向后延遲0.1秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 360/499
??????? 3.查詢時間向后延遲0.2秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 449/499
??????? 4.查詢時間向后延遲0.3秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 473/499
?????? ?
??? 另外一套數(shù)據(jù)庫環(huán)境?? (1主4從,版本為2.6):
???
??????? 1.不設(shè)置延遲的情況下,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的???????? 45/999
??????? 2.查詢時間向后延遲0.1秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 433/499
??????? 3.查詢時間向后延遲0.2秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 492/499
??????? 4.查詢時間向后延遲0.3秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 498/499
?? ?
??? 3.2.3 版本集群環(huán)境測試(1p+2s)
?????? 1.不設(shè)置延遲的情況下,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的???????? 281/500
??????? 2.查詢時間向后延遲0.1秒,從節(jié)點(diǎn)能查詢到數(shù)據(jù)的??? 495/500
?????? 3.0以上的版本,性能確實(shí)好了很多了。
(以上只測試了單條插入情況,如果主節(jié)點(diǎn)更新多條記錄,從節(jié)點(diǎn)的延遲可能會更大,因?yàn)槎鄺l記錄的修改,在從節(jié)點(diǎn)是做為多條記錄各自處理的)
?? ?測試2:考慮到測試1可能存在鎖爭用問題:在主庫循環(huán)插入數(shù)據(jù)后,因?yàn)槿罩臼峭酵降綇墓?jié)點(diǎn),而從節(jié)點(diǎn)再重現(xiàn)數(shù)據(jù)時,可能存在鎖問題。
?? ??? ??? ?把測試1中的時間延遲0.X 秒,修改為同庫其它表插入數(shù)據(jù)后,再回來查看測試表中的數(shù)據(jù)是否已同步到從節(jié)點(diǎn)。
?? ??? ??? ?測試下來看到當(dāng)其它表數(shù)據(jù)插入越多(各表插入數(shù)據(jù)時間消耗只有幾毫秒)。從節(jié)點(diǎn)數(shù)據(jù)重現(xiàn)數(shù)據(jù)越慢。
?? ??? ??? ?(測試庫中進(jìn)行測試)
--------------------------------------------------------------------------------------------
測試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)? 修改為循環(huán)在其它表插入一條數(shù)據(jù),當(dāng)循環(huán)越大時,從庫數(shù)據(jù)重現(xiàn)越慢。
?? ??? ?for j in range(2,20):
?? ??? ??? ??? ?tst_db.get_collection('test%s'%str(j).zfill(2)).insert({"_id":i,"date":datetime.datetime.now()})
總結(jié)
以上是生活随笔為你收集整理的MongoDB 从节点 延迟的测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MONGODB 权限认证
- 下一篇: 集群节点间的延迟问题