【Redis运维】vm.overcommit_memory内存分配控制
一、vm.overcommit_memory的作用
Linux系统对大部分进行内存申请的程序都回复yes,以便能运行更多的程序。而这些程序申请内存后并不一定会马上使用,这种技术就叫做overcommit。通过vm.overcommit_memory来设置overcommit的内存分配策略,它有三个可选值
0:内核将检查是否有足够的内存分配给程序。如果没有则申请失败,并把错误返回给应用进程。而在Redis中这个错误就会表现为“Cannot allocate memory”,然后触发OOM
1:表示内核允许超量使用内存直到用完为止
2:表示内核决不超量使用内存,即系统整个内存空间不能超过swap+50%的RAM值,50%是overcommit_ratio默认值,此参数支持修改
二、vm.overcommit_memory在Redis中的设置
Redis建议把这个值设置为1,是为了让fork能够在低内存下也执行成功。
1、获取overcommit的值
cat /proc/sys/vm/overcommit_memory
2、设置overcommit的值
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl vm.overcommit_memory=1
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论