Redis fork進(jìn)程分配不到內(nèi)存解決方案
MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.
Redis Bgsave 命令用于在后臺(tái)異步保存當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)到磁盤。
BGSAVE 命令執(zhí)行之后立即返回 OK ,然后 Redis fork 出一個(gè)新子進(jìn)程,原來的 Redis 進(jìn)程(父進(jìn)程)繼續(xù)處理客戶端請(qǐng)求,而子進(jìn)程則負(fù)責(zé)將數(shù)據(jù)保存到磁盤,然后退出。
語法
redis Bgsave 命令基本語法如下:
redis 127.0.0.1:6379> BGSAVE
原因:
在BGSAVE時(shí),Redis會(huì)fork一個(gè)子進(jìn)程,把數(shù)據(jù)保存到硬盤上。你可以通過查看日志來獲取BGSAVE失敗的原因(Linux系統(tǒng)里Redis日志文件通常是在/var/log/redis/redis-server.log),大多數(shù)時(shí)候BGSAVE失敗的原因是fork進(jìn)程分配不到內(nèi)存。更多時(shí)候,fork進(jìn)程分配不到內(nèi)存是因?yàn)楦僮飨到y(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。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Redis實(shí)戰(zhàn)之百度首頁新聞熱榜的實(shí)現(xiàn)代碼
這篇文章主要介紹了Redis實(shí)戰(zhàn)之百度首頁新聞熱榜的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
Redis大key多key拆分實(shí)現(xiàn)方法解析
這篇文章主要介紹了Redis大key多key拆分實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Redis+Caffeine實(shí)現(xiàn)多級(jí)緩存的步驟
隨著不斷的發(fā)展,這一架構(gòu)也產(chǎn)生了改進(jìn),在一些場(chǎng)景下可能單純使用Redis類的遠(yuǎn)程緩存已經(jīng)不夠了,還需要進(jìn)一步配合本地緩存使用,例如Guava cache或Caffeine,從而再次提升程序的響應(yīng)速度與服務(wù)性能,這篇文章主要介紹了Redis+Caffeine實(shí)現(xiàn)多級(jí)緩存,需要的朋友可以參考下2024-01-01

