Redis读书笔记(四)Redis客户端

1.Redis 内存陡增
1)现象
服务端现象:Redis主节点内存陡增,几乎用满maxmemory,而从节点内存几乎没有变化(正常情况下主从节点内存使用量基本相同)。
Redis读书笔记(四)Redis客户端_第1张图片
客户端现象:客户端发生了OOM异常,也就是Redis主节点的内存超过了maxmemory的设置,无法写入新数据。
在这里插入图片描述

可能出现问题的原因:
1)确实有大量写入,但是主从复制出现问题:查询了Redis复制相关信息,复制是正常的,主从数据基本一致。
Redis读书笔记(四)Redis客户端_第2张图片

2)其他原因,排查是否由客户端缓冲区造成主节点内存陡增,使用info clients命令查看
Redis读书笔记(四)Redis客户端_第3张图片
输出缓冲区不太正常,最大的客户端输出缓冲区队列已经超过了20w个对象。通过client list找到omem不正常的连接。
一般来说大部分客户端的omem为0。
Redis读书笔记(四)Redis客户端_第4张图片

处理方法,使用client kill杀掉这个客户端即可。

2.客户端周期性的超时
现象:
客户端现象:客户端出现大量超时,分析发现是周期性的。
在这里插入图片描述
服务端现象:服务端没有明显的异常,只是有一些慢查询操作。

分析:
网络原因:经过观察网络是正常的。
客户端:由于是周期性出现问题,就和慢查询日志的历史记录对应了一下时间,发现只要慢查询出现,客户端就产生大量连接超时,两个时间点基本一致。
Redis读书笔记(四)Redis客户端_第5张图片
最终找到问题是慢查询操作造成的,通过执行发现hlen有200万个元素,这种操作必然会造成Redis阻塞,原来是应用方有个定时任务,每5分钟执行一次hgetall操作。

你可能感兴趣的:(Java-后端)