Redis單點(diǎn)性能的瓶頸分析

以下文章基于Redis3.0以上版本源碼進(jìn)行分析解讀


我們?cè)谏弦黄恼?a href="http://www.itdecent.cn/p/29dd668c3ca6" target="_blank">Redis之EventLoop分析中知道:

  • Reids Server中所有的操作都是通過(guò)Event Loop單線程串行調(diào)度的
  • Event Loop中每個(gè)loop中除了處理當(dāng)前io event外, 還會(huì)處理內(nèi)存回收、RDB刷出及復(fù)制等邏輯

由此可知,影響Redis單點(diǎn)性能的操作主要會(huì)有以下幾個(gè)方面:

  • Blocking Command的處理(blpop、pubsub...)
  • 內(nèi)存數(shù)據(jù)的頻繁刷出(RDB/AOF)

先來(lái)分析一下為什么Blocking Command會(huì)對(duì)性能有很大影響

遍歷所有的key和blocked client

redis中block command偵聽(tīng)數(shù)據(jù)結(jié)構(gòu)&處理邏輯
  • redis server會(huì)有一個(gè)全局鏈表 readkeys, 保存了所有被blpop block的key
  • 鏈表中的每個(gè)節(jié)點(diǎn)保存了一個(gè)當(dāng)前key上所有blocked client
  • redis 在每次處理command完成后, 都會(huì)通過(guò)一個(gè)雙層循環(huán)
  1. 由于每次請(qǐng)求的處理都需要完成block client的偵聽(tīng)邏輯, 當(dāng)有大量block client的時(shí)候, 就會(huì)導(dǎo)致每次請(qǐng)求的處理時(shí)延都會(huì)增加
  2. 當(dāng)然大量block client對(duì)于server端的鏈接維護(hù)也是個(gè)負(fù)擔(dān)

RDB/AOF頻繁刷出對(duì)于性能的影響分析

重溫一下event loop的處理機(jī)制
  • time event會(huì)在event loop中被串行執(zhí)行.
  • time event中會(huì)有比較多的高成本操作, 如db rehash、統(tǒng)計(jì)、RDB(AOF)數(shù)據(jù)刷出
  • 其中最大的性能瓶頸就是數(shù)據(jù)的刷出, 因?yàn)镽edis默認(rèn)是fork一個(gè)子進(jìn)程, 將當(dāng)前內(nèi)存中的數(shù)據(jù)按照一定格式寫(xiě)入到本地文件中,

如果當(dāng)一個(gè)redis存在大量的寫(xiě)入請(qǐng)求, 并且rdb的flush策略沒(méi)有很好配置的時(shí)候, 可能每秒都會(huì)觸發(fā)數(shù)據(jù)的刷出, Disk IO的高負(fù)載會(huì)導(dǎo)致整體處理時(shí)延的提升, 最終租塞Event Loop的線程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.1 資料 ,最好的入門(mén)小冊(cè)子,可以先于一切文檔之前看,免費(fèi)。 作者Antirez的博客,Antirez維護(hù)的R...
    JefferyLcm閱讀 17,293評(píng)論 1 51
  • 超強(qiáng)、超詳細(xì)Redis入門(mén)教程 轉(zhuǎn)載2017年03月04日 16:20:02 16916 轉(zhuǎn)載自: http://...
    邵云濤閱讀 17,626評(píng)論 3 313
  • 文章已經(jīng)放到github上 ,如果對(duì)您有幫助 請(qǐng)給個(gè)star[https://github.com/qqxuanl...
    尼爾君閱讀 2,329評(píng)論 0 22
  • 分布式緩存技術(shù)PK:選擇Redis還是Memcached? 經(jīng)平臺(tái)同意授權(quán)轉(zhuǎn)載 作者:田京昆(騰訊后臺(tái)研發(fā)工程師)...
    meng_philip123閱讀 69,042評(píng)論 7 60
  • 哎呦!昨天這一天哪小朋友是玩的真高興,我們大人可累壞了,可是在累看著也高興。你們是不是很想知道我們干什么去了(是出...
    王藝璇_5b7c閱讀 269評(píng)論 0 2

友情鏈接更多精彩內(nèi)容