记录一次解决生产环境redis集群的问题,
Redis:java.util.NoSuchElementException: Unable to validate object
原错:
看到这个报错第一印象是,我redis链接数满了?
1.排查第一步:就是登录集群的一个节点,进入/bin目录里
./redis-cli -c -p 7001 -a password(redis密码)
2.查看集群信息是否正常
cluster info
都ok,没问题
cluster nodes
集群节点三主三从也没问题。
3.查看最大链接数和当前链接数
查看最大链接数 config get maxclients
当前链接数 info clients
这个我遇到过不少次,都是在使用连接后没有及时释放
4.查看使用内存
首先查看当前主机内存是否已满,free -m
然后 查看使用内存 info memory
注意:used_memory是使用的内存,我曾经遇到过一次内存很大的一个情况,这个肯定要干掉的
最大内存如果设置了,还需要设置最大内存策略
5.查看有无慢日志
慢日志也会导致拿不到链接,这种情况我也曾遇到过,在代码里有人用了keys abb*的操作命令,这个很耗时的
命令: slowlog get 2
6.查看aof 或rdb的持久化存储文件所在磁盘是否已满
如果持久化文件所在磁盘已满,也会有这个问题,通过集群的日志也能看到这个错误信息
我现在遇到的问题就是第6点的原因,磁盘满了,,,so easy,就是磁盘满了
总结一点,先看应用日志,再看集群redis的日志,从日志中分析问题的原因会加快我们的排查速度,
集群的每个节点主机都要仔细检查下,祝好运~~~