【springboot 集成Redis 若依 null Unexpected exception during request: java.io.IOException】
1.修改配置文件redis.windows.conf的timeout参数 0,设置tcp-keepalive时间为60,2.检查spring配置文件中redis连接的超时时间 60s
·
问题描述
若依管理系统打包为若干jar包,部署到服务器,启动后自动终止,经过一番搜寻发现错误日志:
INFO 3352 --- [ioEventLoop-4-1] io.lettuce.core.protocol.CommandHandler : null Unexpected exception during request: java.io.IOException: 远程主机强迫关闭了一个现有的连接。
java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[na:1.8.0_221]
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) ~[na:1.8.0_221]
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[na:1.8.0_221]
at sun.nio.ch.IOUtil.read(IOUtil.java:192) ~[na:1.8.0_221]
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) ~[na:1.8.0_221]
at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:253) ~[netty-buffer-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) ~[netty-buffer-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:350) ~[netty-transport-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) ~[netty-transport-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) [netty-transport-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) [netty-transport-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) [netty-transport-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [netty-transport-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-common-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.69.Final.jar!/:4.1.69.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.69.Final.jar!/:4.1.69.Final]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_221]
2023-06-14 00:52:16.956 INFO 3352 --- [ionShutdownHook] org.quartz.core.QuartzScheduler : Scheduler TaskScheduler_$_iZj575z0jja92rZ1686469913890 paused.
2023-06-14 00:52:16.985 INFO 3352 --- [xecutorLoop-1-8] i.l.core.protocol.ConnectionWatchdog : Reconnecting, last destination was /172.17.151.173:6379
这个错误日志,还是从别人的文章里复制来的保险,能规避一定的风险
原因分析
一看这就和Redis有关,而且是连接时长的问题,不过我不熟,网上搜到了一篇文章
若依框架本身部署会存在这个问题,并且在gitee的issue上(原来它是干这个用的)有方案
解决方案
- 修改配置文件redis.windows.conf的timeout参数,设置tcp-keepalive时间为60s
# Close the connection after a client is idle for N seconds (0 to disable)
timeout 0
……
# A reasonable value for this option is 60 seconds.
tcp-keepalive 60
- 检查spring配置文件中redis连接的超时时间
redis:
# 地址
host: localhost
port: 6379
# 连接超时时间
timeout: 60s
lettuce:
- 重启redis(服务)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)