溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis性能常見問題有哪些

發(fā)布時間:2020-11-18 14:39:48 來源:億速云 閱讀:180 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫

了解redis性能常見問題有哪些?這個問題可能是我們?nèi)粘W習或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

Master寫內(nèi)存快照,save命令調(diào)度rdbSave函數(shù),會阻塞主線程的工作,當快照比較大時對性能影響是非常大的,會間斷性暫停服務,所以Master最好不要寫內(nèi)存快照。

Master AOF持久化,如果不重寫AOF文件,這個持久化方式對性能的影響是最小的,但是AOF文件會不斷增大,AOF文件過大會影響Master重啟的恢復速度。

Master調(diào)用BGREWRITEAOF重寫AOF文件,AOF在重寫的時候會占大量的CPU和內(nèi)存資源,導致服務load過高,出現(xiàn)短暫服務暫?,F(xiàn)象。

下面是我的一個實際項目的情況,大概情況是這樣的:

一個Master,4個Slave,沒有Sharding機制,僅是讀寫分離,Master負責寫入操作和AOF日志備份,AOF文件大概5G,Slave負責讀操作,當Master調(diào)用BGREWRITEAOF時,Master和Slave負載會突然陡增,Master的寫入請求基本上都不響應了,持續(xù)了大概5分鐘,Slave的讀請求過半也無法及時響應,上面的情況本來不會也不應該發(fā)生的,是因為以前Master的這個機器是Slave,在上面有一個shell定時任務在每天的上午10點調(diào)用BGREWRITEAOF重寫AOF文件,后來由于Master機器down了,就把備份的這個Slave切成Master了,但是這個定時任務忘記刪除了,就導致了上面悲劇情況的發(fā)生,原因還是找了幾天才找到的。

將no-appendfsync-on-rewrite的配置設(shè)為yes可以緩解這個問題,設(shè)置為yes表示rewrite期間對新寫操作不fsync,暫時存在內(nèi)存中,等rewrite完成后再寫入。最好是不開啟Master的AOF備份功能。

Redis主從復制的性能問題,第一次Slave向Master同步的實現(xiàn)是:Slave向Master發(fā)出同步請求,Master先dump出rdb文件,然后將rdb文件全量傳輸給slave,然后Master把緩存的命令轉(zhuǎn)發(fā)給Slave,初次同步完成。第二次以及以后的同步實現(xiàn)是:Master將變量的快照直接實時依次發(fā)送給各個Slave。不管什么原因?qū)е耂lave和Master斷開重連都會重復以上過程。Redis的主從復制是建立在內(nèi)存快照的持久化基礎(chǔ)上,只要有Slave就一定會有內(nèi)存快照發(fā)生。雖然Redis宣稱主從復制無阻塞,但由于磁盤io的限制,如果Master快照文件比較大,那么dump會耗費比較長的時間,這個過程中Master可能無法響應請求,也就是說服務會中斷,對于關(guān)鍵服務,這個后果也是很可怕的。

以上1.2.3.4根本問題的原因都離不開系統(tǒng)io瓶頸問題,也就是硬盤讀寫速度不夠快,主進程 fsync()/write() 操作被阻塞。

單點故障問題,由于目前Redis的主從復制還不夠成熟,所以存在明顯的單點故障問題,這個目前只能自己做方案解決,如:主動復制,Proxy實現(xiàn)Slave對Master的替換等,這個也是Redis作者目前比較優(yōu)先的任務之一。

感謝各位的閱讀!看完上述內(nèi)容,你們對redis性能常見問題有哪些大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI