查找 java.net.SocketException:没有可用的缓冲区空间

2023-11-27

嗨,我有一个非常丑陋的问题: java.net.SocketException:没有可用的缓冲区空间(已达到最大连接数?) 它是客户端-服务器应用程序。客户端是Windows XP SP2 32b,有两个网卡核心双核。 Java 1.6。 u7。 应用程序有几个打开的服务器套接字用于本地通信,以及几个用于 rmi 到 jboss 服务器的客户端套接字。

几个小时/几天后!我无法打开任何新的客户端套接字来与服务器进行通信。服务器套接字仍然有效。

Windows netstat 显示从 130 到 150 个连接。当手动尝试时,我在大约 3500 个连接后耗尽了缓冲区!

我试过:

  • 检查我们使用的每个套接字并关闭它。
  • 在后台运行 netstat 来监控打开的连接
  • 运行病毒扫描以发现任何恶意软件
  • 将java更新到1.6 u16
  • 禁用第二个网络接口

  • Once java is restarted I am able to open new connection.

    整个异常:

    
    
    cause:javax.naming.CommunicationException: Failed to connect to server IP:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server IP:1099 [Roo
    t exception is java.net.SocketException: No buffer space available (maximum connections reached?): JVM_Bind]]
    2009-08-03 09:13:18,968 DEBUG [Thread-9] - stack trace:
    2009-08-03 09:13:18,968 DEBUG [Thread-9] - org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1562)
    2009-08-03 09:13:18,968 DEBUG [Thread-9] - org.jnp.interfaces.NamingContext.lookup(NamingContext.java:634)
    2009-08-03 09:13:18,968 DEBUG [Thread-9] - org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
    2009-08-03 09:13:18,968 DEBUG [Thread-9] - javax.naming.InitialContext.lookup(Unknown Source)
      

    --edited
    我们终于解决了 snmp 服务器故障的问题。我在下面的评论中写下了我的笔记。感谢帮助。


    听起来确实像是您在应用程序中以某种方式泄漏了套接字。

    • 检查您的代码是否始终关闭 它打开的套接字...即使在 发生某种异常情况;即做 关闭在一个finally block.
    • 如果您的代码使用 URL 连接, 确保它们已断开连接。
    • 我不是专家,但是您的代码应该关闭其 InitialContext 对象吗?
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    查找 java.net.SocketException:没有可用的缓冲区空间 的相关文章

    随机推荐