您的位置:首页 > 数据库 > Redis

redis常见问题汇总

2016-06-23 17:04 411 查看


6.1   Redis编译失败怎么办

l  检查配置参数是否正确

l  当前用户对--prefix目录是否有权限

l  系统是否安装gcc编译工具

l  如果编译失败再次编译出现故障,请删除Redis的源代码目录,再次解压Redis,重新编译。


6.2   Redis启动失败

启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖


6.3   Redis虚拟内存方式无法启动

启动redis服务失败,提示如下信息:

ARE YOU SURE YOU WANT TO USE VM?

Redis Virtual Memory is going to be deprecated soon,

we think you should NOT use it, but use Redis only if

your data is suitable for an in-memory database.

If you *really* want VM add this in the config file:

    really-use-vm yes

此时需在配置文件中增加 really-use-vm yes,重启即可。


6.4   升级安装前没有停止已经运行Redis进程,怎么处理

此种情况下,在启动Redis时报告端口已经被占用。

解决办法,只有用命令行Kill -9逐个杀掉所有本用户启动的Redis进程。然后再启动Redis。


6.5   Redis主从结构,主服务器宕机解决方法

绝对不能重新启动主服务器,如果主服务器没有配置持久化,否则数据会全部丢失。

解决方法是连接从服务器,做save操作。将会在从服务器的data目录保存一份从服务器最新的dump.rdb文件。将这份dump.rdb文件拷贝到主服务器的data目录下。再重启主服务器。


6.6   调整overcommit_memory参数

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

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

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

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

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

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

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

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

/sbin/sysctl -p
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis