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.
内核参数overcommit_memory
它是内存分配策略。可选值:0、1、2。
- 0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
- 1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
- 2:表示内核允许分配超过所有物理内存和交换空间总和的内存
解决
三种方式:
- 编辑sudo vim /etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
- 执行:sysctl vm.overcommit_memory=1
- 执行:echo 1 > /proc/sys/vm/overcommit_memory
容器查看:
docker exec -it redis bash cat /proc/sys/net/core/somaxconn #由于omaxconn是只读的,使用特权容器强行修改该值 echo 551 > /proc/sys/net/core/somaxconn # 强行修改该值 cat /proc/sys/vm/overcommit_memory echo 1 > /proc/sys/vm/overcommit_memory