原因:java.net.SocketException:软件导致连接中止:套接字写入错误

原因:java.net.SocketException:软件导致连接中止:套接字写入错误

我在 Oracle 11g、Weblogic 10.3.4 上运行 JSP。我安装了 2 个托管服务器和一个 Oracle 管理服务器。

我遇到一个错误,其中 2 个托管服务器和管理服务器的日志文件会间歇性地显示java.net.SocketException:软件导致连接中止:套接字写入错误。应用程序可以连续运行两天而不显示此错误,或者一天内会出现几次。服务器负载每天都差不多。

遇到此错误时,服务器将停止接受连接,并且无法访问应用程序。即使我尝试通过 localhost 访问应用程序,我也无法访问 JSP 页面,并且会显示 503 http 状态,但我可以访问静态 HTML 页面。我将无法访问 Oracle 11g Weblogic 管理控制台页面。当我查看管理服务器日志时,它显示托管服务器已与管理服务器断开连接,反之亦然。

神奇的是,应用程序能够自行恢复,并且应用程序能够再次访问,或者我需要重新启动服务器,因为重新启动应用程序的服务不起作用。

应用程序连接到的 FTP 连接也被关闭。

我可以 ping 到服务器端口的 telnet。事件日志似乎没有留下任何信息。我​​们确实运行了 wireshark 来查看数据包流量,似乎应用程序端口正在向负载均衡器发送 RST、ACK 数据包。

任何帮助都将不胜感激。如果您需要更多信息,请随时询问我。

异常追踪

A-000000> <[错误] GetPageContentTag:pageContext 刷新错误,doEndTag 中出现异常 {java.net.SocketException:软件导致连接中止:套接字写入错误}>

答案1

StackOverflow 上已回答此问题这里

基本上,这表明存在网络问题。

答案2

服务器端的某些东西正在创建不良套接字通信,并且它可能会间歇性地表现出来,因为它应该不时被调用,但我们不要假设任何事情,而是对其进行故障排除。

从 Weblogic 中删除所有自定义代码,看看问题是否仍然存在,如果不存在,则您不需要任何 Weblogic 服务包。您的下一步是收集所有自定义代码,放入您的 Eclipse IDE,在可疑位置放置一些断点(搜索任何创建套接字或调用可能执行此操作的 API 的代码片段)并使用以下命令配置托管服务器的 JVM 参数(环境 > 服务器 > YourManagedServer >“远程启动”选项卡):-Xdebug -Xrunjdwp:transport= dt_socket,address=1044,server=y,suspend=n

现在,启动 Weblogic AdminServer 并等待问题自行解决,它应该会在 Eclipse 中打开 DEBUG 界面。祝您调试愉快 :)

更多详情请点击这里: http://www.eclipsezone.com/eclipse/forums/t53459.html

*显然,您不会在 PROD 环境中这样做(只有当您可以在下班后的周末玩它时才可以),所以要小心。

相关内容