1. 程式人生 > 資料庫 >Redis fork程序分配不到記憶體解決方案

Redis fork程序分配不到記憶體解決方案

MISCONF Redis is configured to save RDB snapshots,but it is currently not able to persist on disk.

Redis Bgsave 命令用於在後臺非同步儲存當前資料庫的資料到磁碟。

BGSAVE 命令執行之後立即返回 OK ,然後 Redis fork 出一個新子程序,原來的 Redis 程序(父程序)繼續處理客戶端請求,而子程序則負責將資料儲存到磁碟,然後退出。

語法

redis Bgsave 命令基本語法如下:

redis 127.0.0.1:6379> BGSAVE

原因:

在BGSAVE時,Redis會fork一個子程序,把資料儲存到硬碟上。你可以通過檢視日誌來獲取BGSAVE失敗的原因(Linux系統裡Redis日誌檔案通常是在/var/log/redis/redis-server.log),大多數時候BGSAVE失敗的原因是fork程序分配不到記憶體。更多時候,fork程序分配不到記憶體是因為跟作業系統的優化相沖突,即使作業系統有足夠的記憶體。

解決方法一:

修改redis.conf檔案:

vim redis.conf

然後使用快捷匹配模式:/stop-writes-on-bgsave-error定位到stop-writes-on-bgsave-error字串所在位置,接著把後面的yes設定為no即可。

解決方法二:

修改sysctl.conf檔案,

sudo vim /etc/sysctl.conf

新增配置:

vm.overcommit_memory=1

執行命令,使其生效

sudo sysctl -p /etc/sysctl.conf

重啟Redis。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。