我想赶上我们的Java后台网络套接字泄漏,这在lsof的相当奇怪的输出:奇怪的网络套接字泄漏Java应用程序
java 11734 root 463u IPv6 225927527 TCP 192.168.254.1:http->192.168.254.1:46149 (CLOSE_WAIT)
java 11734 root 464u IPv6 225927347 TCP 192.168.254.1:http->192.168.254.1:46102 (CLOSE_WAIT)
java 11734 root 465u IPv6 225928791 TCP 192.168.254.1:http->192.168.254.1:46451 (CLOSE_WAIT)
java 11734 root 466u IPv6 225927617 TCP 192.168.254.1:http->192.168.254.1:46170 (CLOSE_WAIT)
java 11734 root 467u IPv6 225930330 TCP 192.168.254.1:http->192.168.254.1:57333 (CLOSE_WAIT)
依此类推,直到它吃所有的可用的描述符并导致“文件太多”错误。
任何想法可能导致此?
在此先感谢!
CLOSE_WAIT表示被动关闭,即服务器从客户端接收到FIN,但没有发生其他事情。您可以检查客户端如何关闭套接字。这似乎是“关机”调用没有关闭,但我不知道。 – khachik 2010-12-19 18:59:13
我们确实有一种机制可以自我检测端口是否打开,并且我认为泄漏存在,但是在仔细检查之后,它似乎正确地关闭了这些套接字。 – SyBer 2010-12-19 18:59:50
你真的关闭你的客户端套接字吗? – 2010-12-19 19:07:04