背景

发现网站(wordpress)不能访问,提示:error establishing a redis connection,插件使用了Redis,但是链接不上。

动作

由于网站已经登录不上去,只能直接修改wp-config文件先不使用redis配置,恢复网站访问。

排查

登录到服务器上使用命令,排查下是否是OOM

dmesg | grep -i redis

返回

oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/redis.service,task=redis-server,pid=33619,uid=988
Out of memory: Killed process 33619 (redis-server) total-vm:554292kB, anon-rss:441108kB, file-rss:0kB, shmem-rss:0kB, UID:988 pgtables:980kB oom_score_adj:0

原因:系统内存不足,触发了 OOM Killer,Redis 主进程(PID 33619)被系统强制杀掉。anon-rss:441108kB → Redis 占用了约 431MB 的匿名页内存。

记一次Redis的OOM

解决方案

修改redis.conf并设置淘汰策略

maxmemory 256mb
maxmemory-policy allkeys-lru

如果只作为缓存系统,也可以关闭持久化,进一步提高性能

save ""
appendonly no