java.net.SocketException: Too many open files 問題的解

今天一個應用日誌顯示異常:java.net.SocketException: Too many open files,這是由於網絡請求過多,也就致使了系統打開的文件過多。每個鏈接都會當成「文件」看待的。 java


因而用命令 web

ulimit -a 網絡

(效果:查看每一個用戶容許打開的最大文件數) spa

看到最大文件數是1024,將其更改大點,如 .net

ulimit -n 4096 日誌

而後必須重啓下網絡服務,我用的是WebLogic,重啓以後便沒有出現異常。 blog

致使 Too many open files ,網絡請求過可能是一種可能,但也有多是程序上的缺陷,如沒有釋放一些文件句柄,程序open了文件卻忘記了在最後close。但我確信工程中沒有用到打開文件這一環節,所以這個多是排除掉了。 進程

lsof -p [進程ID] 能夠看到某ID的打開文件情況。進程ID可能用 ps -ef|grep java列出weblogic的進程ID,而後用此ID套入lsof -p ID號,咳,一大堆的請求喲,這顯然是網絡請求過多形成了 Too many open files。適當調整後便已消除這種現象。 it

相關文章
相關標籤/搜索