I/O错误:套接字错误

I/O错误:套接字错误

问题描述:

我们在JBOSS 4.0.2服务器上部署了J2EE Web应用程序。从最近几天起,应用程序突然停止。 我们在日志中遇到以下错误。I/O错误:套接字错误

java.net.SocketException: Software caused connection abort: recv failed

由于上面的套接字错误,应用程序无法连接数据库。 重新启动jboss应用程序也无济于事。要解决套接字错误,我们必须重新启动生产机器。 重新启动生产机器后,它可以正常工作。

上述套接字错误的原因是什么?

+0

看起来像是数据库端的问题。你有没有检查数据库日志中的错误? – 2011-03-17 11:35:15

+0

是否由于数据库关闭连接?看起来像你有防火墙问题。 – adarshr 2011-03-17 11:38:12

+0

我们使用Windows 2003 64位服务器。使用Jboss 4.0.2作为应用程序服务器,JDK版本1.6.18 64位和apache 2.2.15作为web服务器。 还有其他应用程序实例连接到同一个数据库并正常工作。 为了测试这个数据库连接问题,我们在另一个耳朵中部署了一个jsp,但是在成功连接到数据库服务器的相同应用程序服务器实例下。 请让我们知道所需的任何其他信息。寻找对此的回应和解决方案。 – Maulin 2011-03-18 14:56:57

这个错误实质上意味着有人试图从一个封闭的套接字读取或写入(这是Windows的“连接重置”)。虽然有很多原因可以发生,但不可能确切地说明你的应用程序为什么这样做。有些事情你可以尝试检查:

  • ,如果你有多个线程读取和写入同一个插座,使他们的一个肯定不会关闭它
  • 尝试关闭Nagle's algorithm;我已经看到这个错误发生,因为有人在操作系统写完之前关闭了套接字(你可以用setTcpNoDelay做到这一点)