如何解決執行緒太多導致java socket連線池出現的問題
阿新 • • 發佈:2020-01-07
這篇文章主要介紹瞭如何解決執行緒太多導致socket連線池出現的問題,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
執行緒太多導致socket連線池爆滿,程序啟動不了
問題:
某部機上跟其它機器的連線有問題,ping可以通,telnet埠不通,可以其它機器可以連線到該機器上的程序。
java應用啟動不起來,產生以下錯誤。
java.net.SocketException: No buffer space available (maximum connections reached?): listen failed at java.net.PlainSocketImpl.socketListen(Native Method) at java.net.PlainSocketImpl.listen(Unknown Source) at java.net.ServerSocket.bind(Unknown Source) at java.net.ServerSocket.<init>(Unknown Source) at java.net.ServerSocket.<init>(Unknown Source)
查詢問題:
開啟工作管理員,發現某個程序產生了上千的大量的執行緒。
解決方法:
殺死該程序後,java應用可以成功啟動。
icmp協議是IP層的附屬協議,不會用TCP連線,所以正常。而telnet則是HTTP請求報文,會使用TCP連線。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。