redis优化

调整overcommit_memory参数

如果内存情况比较紧张的话,需要设定内核参数overcommit_memory,指定内核针对内存分配的策略,其值可以是0、1、2。

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

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

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

Redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为 8G,这个时候也要同样分配8G的内存给child, 如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)。

设置方式有:3种,需确定当前用户的权限活使用root用户修改:

1:重设文件 echo 1 > /proc/sys/vm/overcommit_memory(默认为0)

2: echo "vm.overcommit_memory=1" >> /etc/sysctl.conf

然后 sysctl -p 使配置文件生效

末尾追加vm.overcommit_memory = 1

然后执行sysctl vm.overcommit_memory=1,使之生效:

你可能感兴趣的:(redis优化)