Redis重启Redisson出错:Unable to send command!

出现问题

最近在公司开发环境发现一个问题,是这样的,开发环境的机器不断打日志,由于日志的定时清理不及时,导致磁盘满了,然后redis由于没法持久化,所以就连不上了,这个时候发现之后我们重启了redis,然后就回家了。

第二天应用在使用redisson的分布式锁的时候就发现错误:org.redisson.client.WriteRedisConnectionException: Unable to send command!,就是分布式锁的命令无法执行,导致许多业务都出现问题。

一开始以为是redis出问题,检查了一下,并重启了一下,还是有问题,最后重启某个微服务之后发现没问题了,到这里定位到是redisson连接管理出问题了,但是具体如何解决还一脸懵逼。

解决问题

看了错误堆栈:

Caused by: java.nio.channels.ClosedChannelException: null
at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)

就知道关闭通道的时候出问题,但是具体什么原因不知道,搜索引擎老师也不知所措

最终,在redisson的github仓库的issue中找到了答案:
The connection not reconnect #1811

刚好我们使用的redisson版本也是3.9.1,这个issue发生提到的错误,问题的出现基本和我遇到的一致,并且在Fixed - connection is not reconnected #1811中解决了,所以,这样子,升级!搞定!

问题总结

问题的主要原因是:在redis出问题之后,watchdog发现连接无效之后,然后打印了一个警告日志之后,就没法有自动重连了,导致继续使用该连接的时候出问题,问题解决,ConnectionWatchdog.channelInactive.tryReconnect方法:

redisson-issue-1811.png

解决版本如下,如果遇到相同的问题可以选择一个升级:
redisson-3.11.3、redisson-3.11.2、redisson-3.11.1、redisson-3.11.0、redisson-3.10.7、redisson-3.10.6、redisson-3.10.5、redisson-3.10.4、redisson-3.10.3、redisson-3.10.2、redisson-3.10.1、redisson-2.15.2、redisson-2.15.1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我会害怕很多东西,就连每天要做的事我都会害怕,一个人呆着,一个人下到一楼去锁门,尽管每天都如此,我还是会...
    小未之阅读 1,396评论 0 0
  • 我是壹姐,用阅读打造美好生活方式,活出平凡人的生活美学态度,原创第295篇 书店之旅 2019年第一飞 ─ 北京,...
    壹姐微幸福阅读 4,783评论 9 19
  • 幸福是什么?幸福是一种感觉,心灵的满足。有时虚浮有时真实,有时那样近有时却那样的远,有时很简单有时很复杂。你要用心...
    菁姝阅读 3,836评论 2 1
  • 文月明红红 我依靠在时间的长廊 带着梦的期许 等着北风呼啸过后 飞雪化做了眼泪 让光阴柔情了万种 我便会寻觅春的气...
    月明红红阅读 5,573评论 26 71

友情链接更多精彩内容