java.net.SocketException: Software caused connection abort: recv failed,带有java.net.SocketException: Connection reset

5
我在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)

非常感谢您的帮助。这是一个有点奇怪的问题。

谢谢。

3个回答

6

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


是的,这确实有帮助,但您不能再使用HTTP监视器了。 - oers
你可以在需要的时候启用它。不启用HTTP监视器也可以使你的应用程序运行更快。 - Harun
1
对于新手... 要禁用特定服务器的HTTP监视器:工具 --> 服务器 --> 选择服务器 --> 切换 启用HTTP监视器 - CᴴᴀZ
非常不太可能。这是由网络问题引起的,而不是软件配置引起的。我怀疑这可能解决了不同的问题,可能是“对等方重置连接”。 - user207421

2

有一篇微软知识库文章与此相关,请查找。基本上,这是由先前的错误写入网络导致的,异常发生在接收到错误的一方。这表示这是网络问题而不是软件问题。


谢谢您的回复,感谢您的帮助。我已经在微软 KB 网站上搜索了一些内容。我只找到了几篇文章。我应该补充说明一下,我正在运行 Windows 7 x64。就我所看到的而言,这些文章都不相关。您是指这其中的一篇吗:http://support.microsoft.com/kb/204594 http://support.microsoft.com/kb/819124 http://support.microsoft.com/kb/331756 http://support.microsoft.com/kb/830597。 - nasty pasty
1
@mieze 对应的是 'WSAECONNABORTED (10053)'翻译:软件导致连接中止。 描述:已建立的连接被主机计算机中的软件停止,可能是由于数据传输超时或协议错误。 - user207421
啊,我明白了。你有任何解决这个问题的想法吗?我被难住了。 - nasty pasty
@mieze,你需要嗅探网络,寻找从收到此异常的节点发出的TCP重传,然后向上游查找,直到找到有问题的段、节点、桥接器或路由器。 - user207421
结果证明,至少对我来说,解决方法是回滚。从Netbeans 7 > 6.9,从JDK 6到5,从Tomcat 7到6。我知道这留下了一个非常广泛的领域,这个问题可能起源于哪里,但它确实解决了问题。我可以补充一下,这个问题似乎并没有影响我的应用程序的操作(我以为它是导致另一个问题的原因,结果证明是其他原因)。我回滚是出于不同的原因,然后问题就消失了。我怀疑是Netbeans 7有bug,但这只是一个猜测,因为据说7.0版本存在缺陷。 - nasty pasty
@mieze 非常不可能。这是一个网络条件。应用软件既不能引起也不能修复它。你可能正在看到网络负载的巧合减少,或者是暂时消失的间歇性硬件故障等等... - user207421

-1

这是一个网络错误!

1. 如果你在Windows上运行你的Spark Streaming,只需要执行以下命令:

ncat.exe -lk 7777

然后从https://nmap.org/ncat/下载 ncat.exe

2. 如果你在Linux上运行你的Spark Streaming,只需要执行以下命令:

nc -lk 7777

并确保你的Linux上已经安装了nc。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接