MISCONF Redis is configured to save RDB snapshots, but it is currently not a


開發環境最近遇到了"MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk"的問題,服務出現了問題,一看日志是Redis在報這個錯誤。

查了查網上的資料,解決方案基本都是修改Redis的配置文件,將

stop-writes-on-bgsave-error yes修改為 stop-writes-on-bgsave-error no

 

這是一個暫時性的解決方法。看了看stackoverflow上的回答,最高贊回答是這樣的,如下圖:

大概意思是:這是一個快速應急方法,如果你擔心你的數據,那就首先檢查下bgsave方法為什么會失敗。bgsave方法是干什么的呢?咱來看下面這張圖:

bgsave方法為什么會失敗呢?咱們看看大佬的回答

大概意思是(翻譯不到位的地方,還請見諒,英文比較菜):在BGSAVE時,Redis會fork一個子進程,把數據保存到硬盤上。你可以通過查看日志來獲取BGSAVE失敗的原因(Linux系統里Redis日志文件通常是在/var/log/redis/redis-server.log),大多數時候BGSAVE失敗的原因是fork進程分配不到內存。更多時候,fork進程分配不到內存是因為跟操作系統的優化相沖突,即使操作系統有足夠的內存。(下面一大段就不翻譯了,意思是可以Redis官網找到相應的解釋,文末會把相關文章鏈接都綴上)。當然大神也給出了解決方案

Linux系統中,修改/etc/sysctl.conf文件,添加配置:

vm.overcommit_memory=1

執行命令,使其生效

sudo sysctl -p /etc/sysctl.conf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM