赞
踩
exceptioName:redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cluster redirections?
exceptionInfo:redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsExceptio
集群的get请求偶尔会有这种MaxRedirection的异常,有时一天有28次异常。
没有修改过redirect参数,默认redirect的最大重试是5次,排除redirect参数设置的太小问题。
需要看下是不是因为redis服务器有慢查询或者AOF异步持久化导致的;
经查看后,确认集群没有开启aof持久化功能,看慢查也没发现明显的耗时命令。
之后怀疑是版本问题,业务查看jedis是否是2.8版本以上,版本应该也不存在问题。
一一排除完上述情况后,业务重启了一下服务,好像没这个报错了。
但是过几天之后,又说还是有这个错误。
之后又排查了一下,找了一些资料,如下:
对该错误处理时,并处理了以下两个异常:
JedisMovedDataException:节点重置/迁移后,会抛出该异常
JedisAskDataException: 数据迁移,发生asking问题, 获取asking的Jedis
再次查看集群的节点状态,发现有一个master之前fail了,集群并没有将其剔除出去,而业务那边配置信息里也没有将这个节点删掉
[work@1 cfq]$ redis-cli -h xxx -p xxx cluster nodes |grep master
33b9d0b2635228cd2e6502831eeb1e8045328ab9 xxx:xx master - 0 1578901264082 8 connected 4096-8191
d1350973ebba4494fb3ac43c5c7e56a8341612fa xxx:xx master - 0 1578901264279 2 connected 8192-12287
dbcb1de135ff5670e34997dcd496dc90939b1f0b xxx:xx master - 0 1578901266234 4 connected 0-4095
60f6394e8de539b1961f0762d4709698741e2438 xxx:xx myself,master - 0 0 9 connected 12288-16383
ecc6110a5aa0045a86deecb3c6e4ac96bf2ba917 xxx:xx master,fail - 1574452925253 1574452919265 7 connected
将该fail的节点剔除出去之后,再让业务改一下节点地址,应该就好了.
一些很复杂的问题,往往都是很简单的原因造成的,还是得学会抓住问题的本质,一针见血。
参考:
https://segmentfault.com/a/1190000016461888
http://www.javacoder.cn/?p=1381
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。