1. 程式人生 > 程式設計 >如何解決執行緒太多導致java socket連線池出現的問題

如何解決執行緒太多導致java socket連線池出現的問題

這篇文章主要介紹瞭如何解決執行緒太多導致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連線。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。