情况1、可能因为系统内存不足,而且vm.overcommit_memory=0导致redis申请内存被拒绝。
解决方案:将vm.overcommit_memory修改为1
要在调节时临时设定这些值,请将所需值 echo 到 proc 文件系统中的适当文件中。例如:要将
overcommit_memory
临时设定为
1
,请运行:
# echo 1 > /proc/sys/vm/overcommit_memory
注:到 proc 文件系统中该参数的路径要具体看此变更所影响的系统。
要永久设定这些值,则需要使用
sysctl
命令。有关详情请参考
《部署指南》,网址为
http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/。
与容量相关的内存可调参数
以下参数位于 proc 文件系统的
/proc/sys/vm/
目录中。
-
规定决定是否接受超大内存请求的条件。这个参数有三个可能的值:
-
0
— 默认设置。内核执行启发式内存过量使用处理,方法是估算可用内存量,并拒绝明显无效的请求。遗憾的是因为内存是使用启发式而非准确算法计算进行部署,这个设置有时可能会造成系统中的可用内存超载。 -
1
— 内核执行无内存过量使用处理。使用这个设置会增大内存超载的可能性,但也可以增强大量使用内存任务的性能。 -
2
— 内存拒绝等于或者大于总可用 swap 大小以及overcommit_ratio
指定的物理 RAM 比例的内存请求。如果您希望减小内存过度使用的风险,这个设置就是最好的。注意
只为 swap 区域大于其物理内存的系统推荐这个设置。
-
overcommit_memory