摘要:最近把服務(wù)內(nèi)存中的部分?jǐn)?shù)據(jù)遷移到磁盤,存儲(chǔ)引擎使用的遷移完畢,就迫不及待的進(jìn)行了性能測試。我嘞個(gè)去,性能剛剛的。測試已經(jīng)證明了我們的結(jié)果。那如果這樣,那么測試得出的結(jié)論對(duì)于第一次請求耗時(shí)來說毫無意義。
最近把服務(wù)內(nèi)存中的部分?jǐn)?shù)據(jù)遷移到磁盤,存儲(chǔ)引擎使用的rocksdb.遷移完畢,就迫不及待的進(jìn)行了性能測試。我嘞個(gè)去,性能剛剛的。其實(shí)內(nèi)心已經(jīng)埋下了懷疑的種子,怎么可能?然后用top命令查看了下。
# top
呵呵,果然是filesystem cache的原因。但是作為有著嚴(yán)格求證精神的程序員(其實(shí)是對(duì)操作系統(tǒng)原理不算特別熟悉),趕緊寫了個(gè)測試用例來證明自己的推測。
首先關(guān)閉服務(wù),然后刷新和清除系統(tǒng)cache
#sync #echo 1 > /proc/sys/vm/drop_caches #echo 2 > /proc/sys/vm/drop_caches #echo 3 > /proc/sys/vm/drop_caches
已知rocksdb數(shù)據(jù)庫文件中存放了所有的影視實(shí)體信息,然后編寫測試用例=》根據(jù)所有的影視id遍歷所有的數(shù)據(jù)。我給測試用例分配了-Xmx1024M -Xms1024M
測試性能日志
再跑一次測試用例,觀察性能日志
尼瑪,發(fā)現(xiàn)沒有,78186/4377 = 17.862919808088倍啊.
如果你再次運(yùn)行上面的命令,刷新和清理系統(tǒng)緩存,再跑測試用例,發(fā)現(xiàn)耗時(shí)跟第一次差不多。這個(gè)我就不貼具體的實(shí)例了。當(dāng)然你可以用iostat觀察磁盤的io情況,發(fā)現(xiàn)幾乎沒有讀請求。因?yàn)槿玞ache住了。
測試已經(jīng)證明了我們的結(jié)果。
關(guān)于操作系統(tǒng)中buffer和cache的機(jī)制,自己感興趣的可以去查下。
那如果這樣,那么測試得出的結(jié)論對(duì)于第一次請求耗時(shí)來說毫無意義。這時(shí)候再想想我們是否可以把文件系統(tǒng)的cache給關(guān)閉掉,然后進(jìn)行測試?
下一篇文章我們繼續(xù)>>
原文鏈接http://segmentfault.com/a/1190000003975291
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64738.html
摘要:接著性能測試筆記一然后我就考慮使用禁用寫入緩存,在下發(fā)現(xiàn)一直報(bào)驅(qū)動(dòng)錯(cuò)誤。關(guān)鍵是關(guān)機(jī)重啟之后,測試時(shí)取中數(shù)據(jù)時(shí)發(fā)現(xiàn)系統(tǒng)仍然在不斷的增加。官方要求內(nèi)核最低版本。也就是限定了容器使用的內(nèi)存只有,哪怕是系統(tǒng)現(xiàn)在就進(jìn)行愉快的測試吧。。 接著centos rocksdb 性能測試筆記(一)然后我就考慮使用hdparm禁用寫入緩存,在centos下發(fā)現(xiàn)一直報(bào)驅(qū)動(dòng)錯(cuò)誤。在ubuntu上面禁用write...
摘要:接著性能測試筆記一然后我就考慮使用禁用寫入緩存,在下發(fā)現(xiàn)一直報(bào)驅(qū)動(dòng)錯(cuò)誤。關(guān)鍵是關(guān)機(jī)重啟之后,測試時(shí)取中數(shù)據(jù)時(shí)發(fā)現(xiàn)系統(tǒng)仍然在不斷的增加。官方要求內(nèi)核最低版本。也就是限定了容器使用的內(nèi)存只有,哪怕是系統(tǒng)現(xiàn)在就進(jìn)行愉快的測試吧。。 接著centos rocksdb 性能測試筆記(一)然后我就考慮使用hdparm禁用寫入緩存,在centos下發(fā)現(xiàn)一直報(bào)驅(qū)動(dòng)錯(cuò)誤。在ubuntu上面禁用write...
摘要:因?yàn)樽詭У陌姹具^低,會(huì)導(dǎo)致編譯通不過。設(shè)置環(huán)境變量以上設(shè)置的環(huán)境變量都是臨時(shí)的,建議設(shè)置成永久全局變量。這時(shí)候如果出現(xiàn)錯(cuò)誤,重新運(yùn)行命令如果仍然報(bào)錯(cuò),比如打不開某個(gè)文件,把下的全部刪掉。 Step1 安裝git服務(wù),用于從github拉取rocksdb源代碼.如果你想從源碼安裝最新版git,參考源碼安裝git # yum install git 安裝后可以使用git --versio...
閱讀 3692·2021-10-09 09:44
閱讀 3396·2021-09-22 15:29
閱讀 3150·2019-08-30 15:54
閱讀 3027·2019-08-29 16:19
閱讀 2155·2019-08-29 12:50
閱讀 601·2019-08-26 14:04
閱讀 1707·2019-08-23 18:39
閱讀 1356·2019-08-23 17:59