【问题标题】:I/O ERROR: SOCKET ERRORSI/O 错误:套接字错误
【发布时间】:2011-03-17 05:07:19
【问题描述】:

我们在 JBOSS 4.0.2 服务器上部署了 J2EE Web 应用程序。从最近几天应用程序突然停止。 我们在日志中收到以下错误。

java.net.SocketException:软件 导致连接中止:recv failed

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

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

【问题讨论】:

  • 看起来是数据库端的问题。您检查数据库日志中的错误了吗?
  • 是数据库连接关闭造成的吗?看来您遇到了防火墙问题。
  • 我们使用的是 Windows 2003 64 位服务器。使用 Jboss 4.0.2 作为应用服务器,JDK 版本 1.6.18 64 位和 apache 2.2.15 作为网络服务器。还有其他应用程序实例连接到同一个数据库并且工作正常。为了测试这个数据库连接问题,我们在另一个耳朵中部署了一个 jsp,但在成功连接到数据库服务器的同一应用程序服务器实例下。请让我们知道所需的任何其他信息。尽快寻求对此的回应和解决方案。

标签: java sockets jakarta-ee


【解决方案1】:

这个错误本质上意味着有人试图从一个关闭的套接字读取或写入(它是 Windows 所说的“连接重置”)。但是,可能发生的原因有很多,并且无法准确说明您的应用程序为什么会这样做。您可以尝试检查一些事情:

  • 如果您有多个线程读写同一个套接字,请确保其中一个线程没有关闭它
  • 尝试关闭Nagle's algorithm;我已经看到发生此错误,因为有人在操作系统完成写入之前关闭了套接字(您可以使用 setTcpNoDelay 做到这一点)

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 2017-09-08
    • 2014-10-26
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多