Redis在启动的时候,可能会出现这样的日志:
什么是overcommit?Linux对大部分的申请内存的请求回复yes,以便能够运行更多的程序。申请内存后,并不会马上使用内存,这种技术叫做overcommit。如果Redis启动有上述日志说明vm.overcommit_memory=0,Redis提示设置为1.
vm.overcommit_memory用来设置内存分配策略,有三个可选值:
日志中Background save代表就是bgsave和bgrewriteaof,如果当前可用内存不足,操作系统应该如何处理fork操作。如果vm.overcommit_memory=0,代表没有可用内存,就申请内存失败,对应到Redis就是执行fork失败,在Redis日志出现Cannot allocate memory
查看这个值:
cat /proc/sys/vm/overcommit_memory
设置这个值:
echo "vm.overcommit_memory=1" >>/etc/sysctl.conf
sysctl vm.overcommit_memory=1