Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处于绑定状态的套接字太多_Java_Sockets - Fatal编程技术网

Java 处于绑定状态的套接字太多

Java 处于绑定状态的套接字太多,java,sockets,Java,Sockets,在我们的一个客户系统中,我们面临着太多的打开文件错误,目前FD限制设置为max,并且这种情况每周发生一次 在看到lsof和netstat o/p之后,我能够看到太多的套接字处于绑定状态(20K)。据我所知,这种状态是一种瞬态,我无法找到它的实际泄漏位置。当我在heapDump中看到其中一个绑定套接字时,我看到了以下GC引用 >java.net.InetSocketAddress >> sun.nio.ch.SocketChannelImpl >>>sun

在我们的一个客户系统中,我们面临着太多的打开文件错误,目前FD限制设置为max,并且这种情况每周发生一次

在看到lsof和netstat o/p之后,我能够看到太多的套接字处于绑定状态(20K)。据我所知,这种状态是一种瞬态,我无法找到它的实际泄漏位置。当我在heapDump中看到其中一个绑定套接字时,我看到了以下GC引用

>java.net.InetSocketAddress
 >> sun.nio.ch.SocketChannelImpl
  >>>sun.nio.ch.SocketAdaptor
   >>>>java.net.SocksSocketImpl
    >>>>>java.lang.ref.Finalizer 

我不知道如何解决这个问题。我需要专家对这一点发表意见?

以确保套接字是关闭的()d它是从终结器线程关闭的

终结器线程是单线程的,如果运行缓慢(例如,因为您没有正确关闭连接),则创建套接字的速度可能比清理套接字的速度快


首先要检查的是进行堆栈转储,看看终结器线程通常在等待什么。其次,检查您是否始终在完成套接字连接后关闭它们。套接字仍将添加到终结器队列,但它们不会花任何时间检查它们是否已关闭。

要确保套接字已关闭(),它将从终结器线程关闭

终结器线程是单线程的,如果运行缓慢(例如,因为您没有正确关闭连接),则创建套接字的速度可能比清理套接字的速度快


首先要检查的是进行堆栈转储,看看终结器线程通常在等待什么。其次,检查您是否始终在完成套接字连接后关闭它们。套接字仍将添加到终结器队列中,但它们不会花任何时间检查它们是否已关闭。

套接字泄漏严重。在某个地方,当你应该关闭它们时,你不会在最后一个街区关闭它们。我会从绑定状态猜测,在某个地方您正在调用new Socket(),然后调用connect(),如果失败,您就不会关闭a Socket,但可能还有许多其他的可能性。

您正在严重泄漏套接字。在某个地方,当你应该关闭它们时,你不会在最后一个街区关闭它们。我会从绑定状态猜测,在某个地方您正在调用new Socket(),然后调用connect(),如果失败,您将不会关闭a Socket,但可能还有许多其他可能性。

感谢您的提示,我们能够找出问题所在。实际上nio抛出了一个UnselvedAddress异常,在这种情况下,soket资源没有被清理,但当引发IOException时,所有资源都被清理并释放,现在我们只处理UnselvedAddressException。修复很简单,但需要时间才能归结为问题:)

感谢您的提示,我们能够找出问题所在。实际上nio抛出了一个UnselvedAddress异常,在这种情况下,soket资源没有被清理,但当引发IOException时,所有资源都被清理并释放,现在我们只处理UnselvedAddressException。修复很简单,但需要时间才能归结为问题:)

感谢您的提示,我们能够找出问题所在。实际上nio抛出了一个UnselvedAddress异常,在这种情况下,soket资源没有被清理,但当引发IOException时,所有资源都被清理并释放,现在我们只处理UnselvedAddressException。修复很简单,但需要时间才能归结为问题:)感谢您的提示,我们能够找出问题。实际上nio抛出了一个UnselvedAddress异常,在这种情况下,soket资源没有被清理,但当引发IOException时,所有资源都被清理并释放,现在我们只处理UnselvedAddressException。修复很简单,但需要时间才能归结为问题:)