Redis fork進程分配不到內(nèi)存解決方案
MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
Redis Bgsave 命令用于在后臺異步保存當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)到磁盤。
BGSAVE 命令執(zhí)行之后立即返回 OK ,然后 Redis fork 出一個新子進程,原來的 Redis 進程(父進程)繼續(xù)處理客戶端請求,而子進程則負責(zé)將數(shù)據(jù)保存到磁盤,然后退出。
語法
redis Bgsave 命令基本語法如下:
redis 127.0.0.1:6379> BGSAVE
原因:
在BGSAVE時,Redis會fork一個子進程,把數(shù)據(jù)保存到硬盤上。你可以通過查看日志來獲取BGSAVE失敗的原因(Linux系統(tǒng)里Redis日志文件通常是在/var/log/redis/redis-server.log),大多數(shù)時候BGSAVE失敗的原因是fork進程分配不到內(nèi)存。更多時候,fork進程分配不到內(nèi)存是因為跟操作系統(tǒng)的優(yōu)化相沖突,即使操作系統(tǒng)有足夠的內(nèi)存。
解決方法一:
修改redis.conf文件:
vim redis.conf
然后使用快捷匹配模式:/stop-writes-on-bgsave-error定位到stop-writes-on-bgsave-error字符串所在位置,接著把后面的yes設(shè)置為no即可。
解決方法二:
修改sysctl.conf文件,
sudo vim /etc/sysctl.conf
添加配置:
vm.overcommit_memory=1
執(zhí)行命令,使其生效
sudo sysctl -p /etc/sysctl.conf
重啟Redis。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Redis數(shù)據(jù)類型之散列類型hash命令學(xué)習(xí)
這篇文章主要為大家介紹了Redis數(shù)據(jù)類型之散列類型hash命令學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07