Redis重启Redisson出错:Unable to send

作者: SevenLin1993 | 来源:发表于2019-09-26 12:56 被阅读0次

    出现问题

    最近在公司开发环境发现一个问题,是这样的,开发环境的机器不断打日志,由于日志的定时清理不及时,导致磁盘满了,然后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

    欢迎关注【Java In Mind】:


    qrcode_for_gh_69aef67cad36_258.jpg

    相关文章

      网友评论

        本文标题:Redis重启Redisson出错:Unable to send

        本文链接:https://www.haomeiwen.com/subject/ljnguctx.html