mysql端口不够用,解決windows系統因TCP端口不足導致mysql數據庫無法訪問的問題

在windows服務器上面批量處理數據的時候,遇到下面的異常,意思是說連接數用完了,無法再建立連接。com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The driver was unable to create a connection due to an inability to establish the client portion of a socket.

This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable.

For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required.

For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).

at sun.reflect.GeneratedConstructorAccessor16.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

默認情況下,Windows 允許用於使用5000 個臨時(短命)TCP 端口。任何端口關閉后,它將在TIME_WAIT 狀態保持120 秒。與重新初始化全新的連接相比,該狀態允許以更低的開銷重新使用連接。 但是,在該時間逝去前,無法再次使用該端口。

對於小的可用TCP 端口堆棧(5000 ),以及具有TIME_WAIT 狀態的大量在短時間內打開和關閉的 TCP 端口,你很可能遇到端口耗盡問題。

我們可以通過修改注冊表配置來解決問題:

1,啟動注冊表編輯器(Regedt32.exe )。

2,在注冊表中確定下述鍵值的位置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

在“編輯”菜單上點擊“添加值”,然后增加下述注冊值:

Value Name: MaxUserPort

Data Type: REG_DWORD

Value: 65534

它用於設置為任何用戶提供的臨時端口數。有效范圍介於5000 和65534 之間(十進制)。默認值為0x1388 (5000 ,十進制)。

3,在“編輯”菜單上點擊“添加值”,然后增加下述注冊值:

Value Name: TcpTimedWaitDelay

Data Type: REG_DWORD

Value: 30

它用於設置關閉之前將TCP 端口連接保持在TIME_WAIT 狀態的秒數。 有效范圍介於0 秒和300 秒之間。默認值為0x78 (120 秒)。

4,退出注冊表編輯器。

5,重啟服務器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值