admin 管理员组文章数量: 1184232
在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,重启服务器。
版权声明:本文标题:解决windows系统因TCP端口不足导致mysql数据库无法访问的问题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1754098798a2964409.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论