java.net.SocketException:软件导致连接中止:recv 失败,出现 java.net.SocketException:连接重置 [重复]

Posted

技术标签:

【中文标题】java.net.SocketException:软件导致连接中止:recv 失败,出现 java.net.SocketException:连接重置 [重复]【英文标题】:java.net.SocketException: Software caused connection abort: recv failed, with java.net.SocketException: Connection reset [duplicate] 【发布时间】:2011-10-09 23:25:04 【问题描述】:

我在 Netbeans IDE 中的 Java、Hibernate、mysql 项目中遇到异常。

我已经进行了一些挖掘以尝试修复这个奇怪的 Socket 异常,但无济于事。

一些论坛解决方案建议为 Hibernate 实现一个 c3p0 连接池。没有修复。

其他人建议禁用 AV 和防火墙 (!!),因为它们可能会干扰套接字连接。没有修复。

我已经用 Hibernate 标记了这个问题,因为我不确定 Hibernate 是否是原因,但异常发生在 Hibernate 调用(运行查询)上。应用程序中的其他 Hibernate 代码工作正常。 Hibernate 版本是 3.2。

例外:

NotifyUtil::java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at     sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2676)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at org.netbeans.modules.web.monitor.server.NotifyUtil$RecordSender.run(NotifyUtil.java:299)

此异常可能发生一次,也可能发生几次,之后没有或很少出现此异常:

NotifyUtil::java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2676)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at org.netbeans.modules.web.monitor.server.NotifyUtil$RecordSender.run(NotifyUtil.java:299)

我们将不胜感激。这有点奇怪。

谢谢。

【问题讨论】:

【参考方案1】:

这是网络错误!

1.如果您在 windows 上运行 sparkstreaming。只需运行:

ncat.exe -lk 7777

并在https://nmap.org/ncat/下载ncat.exe

2.如果您在 linux 上运行 sparkstreaming。只需运行:

nc -lk 7777

并确保您已在 linux 上安装

【讨论】:

【参考方案2】:

就我而言,我使用的是 Tomcat。右键单击服务器列表中的 Tomcat,然后单击属性,然后取消选中“启用 HTTP 监视器”。这解决了我的问题

【讨论】:

是的,这有帮助,但你不能再使用 HTTP 监视器了 您可以随时在需要时启用它。不启用 HTTP Monitor 也可以让你的应用运行得更快。 新手 ... 禁用特定服务器的 HTTP 监视器:Tools --> Server --> Choose the server --> 切换 @987654324 @ 非常不可能。这是由网络问题引起的,而不是由软件配置引起的。我怀疑这解决了另一个问题,可能是“对等方重置连接”。【参考方案3】:

有一篇关于这个的微软知识库文章,看看你能不能找到它。基本上,这是由获得异常的对等方写入网络的先前错误的结果。表示网络问题而不是软件问题。

【讨论】:

感谢您的回复,感谢您的帮助。我已经浏览了 Microsoft KB 站点。我只找到了几篇文章。我应该补充一点,我正在运行 Windows 7 x64。据我所知,没有一篇文章是相关的。你的意思是其中之一吗:support.microsoft.com/kb/204594support.microsoft.com/kb/819124support.microsoft.com/kb/331756support.microsoft.com/kb/830597。 @mieze 它对应于 'WSAECONNABORTED (10053) 翻译:软件导致连接中止。说明:已建立的连接被主机中的软件停止,可能是因为数据传输超时或协议错误。' 啊,我明白了。您对如何解决此问题有任何想法吗?我被难住了。 @mieze 你将不得不嗅探网络,寻找来自收到此异常的节点的 TCP 重传,然后向上游工作,直到找到有问题的网段或节点或网桥或路由器。 事实证明,至少对我而言,答案是回滚。从 Netbeans 7 > 6.9,从 JDK 6 到 5,从 Tomcat 7 到 6。我知道这留下了一个非常广泛的区域,这个问题可能源于此,但它确实解决了问题。我可能会补充一点,这个问题似乎并没有影响我的应用程序的运行(我认为这是导致问题的原因,结果却是其他问题)。我出于不同的原因回滚,它消失了。我怀疑有错误的 Netbeans 7,但这只是怀疑,因为 7.0 版本被认为有错误。

以上是关于java.net.SocketException:软件导致连接中止:recv 失败,出现 java.net.SocketException:连接重置 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致我的 java.net.SocketException:连接重置? [复制]

如何修复 java.net.SocketException:损坏的管道?

Java 1.6 HttpsURLConnection:java.net.SocketException:连接重置

java.net.SocketException:recvfrom 失败:ETIMEDOUT(连接超时)

java.net.SocketException:软件导致连接中止:recv 失败 [重复]

如何解决 java.net.SocketException:使用 selenium 的 java 中的连接重置异常?