在我们的一个客户系统中,我们面临打开文件过多错误,目前 FD 限制设置为最大值,并且每周发生一次。
在看到 lsof 和 netstat o/p 之后,我能够看到太多的 Sockets 处于 BOUND 状态(20K)。据我了解,这种状态是一种瞬态,我无法找到它实际泄漏的位置。当我在 heapDump 中看到有界套接字之一时,我看到以下 GC 引用
>java.net.InetSocketAddress
>> sun.nio.ch.SocketChannelImpl
>>>sun.nio.ch.SocketAdaptor
>>>>java.net.SocksSocketImpl
>>>>>java.lang.ref.Finalizer
我不知道如何解决这个问题。我需要专家意见吗?