我想趕上我們的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