Redis "MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk"問題

sl521100發表於2016-02-03

今天在程式中,jedis put資料到redis過程中,“MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk”報錯;

再檢視Redis日誌,看到有這樣的錯誤提示“Can’t save in background: fork: Cannot allocate memory”,這個提示很明顯"Fork程式時記憶體不夠用了!",但記憶體明明還有一個多G;

經網上查詢,Redis在儲存資料到硬碟時為了避免主程式假死,需要Fork一份主程式,然後在Fork程式內完成資料儲存到硬碟的操作,如果主程式使用了4GB的記憶體,Fork子程式的時候需要額外的4GB,此時記憶體就不夠了,Fork失敗,進而資料儲存硬碟也失敗了。

解決如下:

執行命令 sysctl vm.overcommit_memory=1

/etc/sysctl.conf 檔案新增

vm.overcommit_memory=1

相關文章