Redis曝新BUG:內存超限后的死循環
Redis 曝出了一個新 bug,如果你設定了 Redis 的 maxmemory,并且這個 Redis 有 Slave,那么當你的 maxmemory 限制達到后,就會出現死循環。具體原因和流程如下:
- Redis 達到了配置中設定的 maxmemory 限制,開始按 LRU 策略刪除數據
- 被過期清除的數據會生成 DEL 日志推送到 Slave
- 但是如果 Slave 達到一定數量時,這條 DEL 日志使用的 output buffer 空間可能會超過剛剛清除數據空閑出來的空間,這時候會導致空間又超限了
- 于是整個清除過程就變成了死循環
而且這個問題不僅會出現在 Slave 的情況下,在寫 AOF buffer 的時候也會發生同樣的問題。
Redis 作者隨后發布了補丁(This fixes issue)對這個問題進行修復。目前此 bug 的修復已經合并到2.4的主干中,截止目前為止,Redis 官方2.4.8穩定版本中已經包含對此問題的修復。
問題地址:issues #327
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!