java 链接占用太多_Java程序链接数过多导致java.net.SocketException: No buffer space available问题...
發布時間:
Aug 29, 2020
更新時間:
Aug 29, 2020
總字數:482
閱讀時間:1m
作者: 謝先斌
Java程序鏈接數過多導致java.net.SocketException: No buffer space available問題
問題
跑java的程序,報錯如下:
java.net.SocketException: No buffer space available (maximum connections reached?): connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
...
現象
通過netstat -an查看到存在大量的socket資源被占用
原因
http / tcp 連接未釋放
系統 socket 連接數設置過小
解決方式
Linux
在/etc/security/limits.conf添加:
* soft nofile 204800
* hard nofile 32768
在/etc/sysctl.conf添加:
# Decrease TIME_WAIT seconds, default is 30 seconds
net.ipv4.tcp_fin_timeout=10
# Recycle and Reuse TIME_WAIT sockets faster, default is 0 for both
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
參數說明:
net.ipv4.tcp_fin_timeout 系統默認的TIMEOUT時間
net.ipv4.tcp_tw_reuse 允許將TIME_WAIT sockets重新用于新的TCP連接 默認為0表示關閉
net.ipv4.tcp_tw_recycle 開啟TCP連接中TIME_WAIT sockets的快速回收 默認為0 表示關閉
windows
啟動注冊表編輯器
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建 MaxUserPort
值名稱:MaxUserPort
值類型:DWORD
值數據:十進制65534/十六進制是FFFE
PS:有效范圍:5000 - 65534 (十進制) 默認:0x1388 5000(十進制)
新建 TCPTimedWaitDelay
值名稱:TCPTimedWaitDelay
值類型:DWORD
值數據:十進制30/0000001e
總結
以上是生活随笔為你收集整理的java 链接占用太多_Java程序链接数过多导致java.net.SocketException: No buffer space available问题...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12万吨核动力补给舰与航母的差异
- 下一篇: mysql 查询 distinct_MY