redis报错overcommit_memory

  • A+
所属分类:Redis

Redis服务器在定期save db的时候,日志报错Can't save in background: fork: Cannot allocate memory。因为RDB模式下,redis会frok一个子进程来保存数据,可以通过日志看到警告信息,建议修改Linux系统内核配置;

13274:M 10 Aug 17:49:59.060 # WARNING overcommit_memory is set to 0! Background
save may fail under low memory condition. To fix this issue add
'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the
command 'sysctl vm.overcommit_memory=1' for this to take effect.

13274:M 10 Aug 17:49:59.060 # Can't save in background: fork: Cannot allocate memory

overcommit_memory内存分配策略

可选值:0、1、2。

0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

解决方案

vim /etc/sysctl.conf
vm.overcommit_memory=1

sysctl -p

echo 1 > /proc/sys/vm/overcommit_memory

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: