[Redis] 解决 java.io.IOException: 远程主机强迫关闭了一个现有的连接
程序员文章站
2022-04-24 10:50:47
...
前言:
今天在使用Redis的时候遇到了如下问题:
java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[na:1.8.0_191]
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) ~[na:1.8.0_191]
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[na:1.8.0_191]
at sun.nio.ch.IOUtil.read(IOUtil.java:192) ~[na:1.8.0_191]
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) ~[na:1.8.0_191]
at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:288) ~[netty-buffer-4.1.36.Final.jar:4.1.36.Final]
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1125) ~[netty-buffer-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:347) ~[netty-transport-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:148) ~[netty-transport-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682) ~[netty-transport-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:617) ~[netty-transport-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:534) ~[netty-transport-4.1.36.Final.jar:4.1.36.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) ~[netty-transport-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906) ~[netty-common-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.36.Final.jar:4.1.36.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.36.Final.jar:4.1.36.Final]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_191]
在网上看到了许多解决办法,最开始将时间设置为了5000ms,当时解决了问题,但是过了一段时间后,就又不好使了,所以我觉得问题不是这个造成的,经过多番查找资料,最终找到了解决问题的实际办法。
最终原因是Redis配置conf文件没有配置正确,我需要配值conf文件中的tcp-keepalive。将它改成1-50左右的数字,比如改成tcp-keepalive,之前是0或者300貌似,改成小一点的数字就行了,原理百度或者根据配置文件的注释英文翻译一下,记得改完重启Redis。建议1-20之间就不那么卡或报错。
上一篇: 一个demo
下一篇: Java nio 学习笔记
推荐阅读
-
Python中使用pip安装库时提示:远程主机强迫关闭了一个现有的连接
-
Adb connection Error:远程主机强迫关闭了一个现有的连接
-
Adb connection Error:远程主机强迫关闭了一个现有的连接
-
Python中使用pip安装库时提示:远程主机强迫关闭了一个现有的连接
-
关于java.io.IOException: 远程主机强迫关闭了一个现有的连接问题解决
-
[Redis] 解决 java.io.IOException: 远程主机强迫关闭了一个现有的连接
-
Netty学习4—NIO服务端报错 远程主机强迫关闭了一个现有的连接
-
elasticsearch java.io.IOException: 远程主机强迫关闭了一个现有的连接。
-
使用Redisson与SpringBoot时出现java.io.IOException: 远程主机强迫关闭了一个现有的连接异常
-
解决springboot2整合Redis 后某个接口报错 java.io.IOException: 远程主机强迫关闭了一个现有的连接