-
现象:redis运行一段时间之后就会出现假死的现象
- 假死指的是:进程在、pid在、telnet 端口是通的、redis-cli命令可以连接,但无法查询数据,查询的时候报错,如下图:
- 可以看到这个报错是有关权限的,但可以确认该redis并没有设置密码,况且已经运行了一段时间之后,突然开始不正常的
-
尝试解决:
- 观察redis的运行日志发现在重启redis的时候会有warning,如下图
- 因为没有报错所有先解决warning,然后经过各种尝试,得解决方案如下:
1. 修改内核参数,3种方法,任选其一: 1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效 2)sysctl vm.overcommit_memory=1 3)echo 1 > /proc/sys/vm/overcommit_memory 2. 修改redis.conf,然后重启redis maxmemory 3G maxmemory-policy allkeys-lru maxmemory-samples 3