我在做天猫项目时,一小段时间频繁的连接数据库时。tomcat报空指针异常,找了很久才发现是数据库问题,数据库报错如下。
com.mysql.jdbc.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).
这里说的是操作系统限制了连接个数,当你连接个数大于操作系统默认设置时就会出错。解决办法就是修改注册表值。
1打开注册表编辑器
2依次进入注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3鼠标点击在Parameters后,点击编辑菜单,新建值
值名称: MaxUserPort.
数据类型为: REG_DWORD
数据值为: 65534
修改完后,连接最大为65534个,默认5000.值就为5000 至65534
修改好退出,重启计算机就好了。
还要说明下,为了这个问题。我还把数据库驱动升级到了8.0.12。可是驱动升级完后,原先的连接方式也要改下。原先的连接为Class.forName("com.mysql.jdbc.Driver");, 现在要改成
Class.forName("com.mysql.cj.jdbc.Driver");这样才行。
url也要修改为如下
jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
这样大功告成,折磨了将近一天的的问题终于好了,不易啊。
下面是修改微软连接个数的官方说明
https://support.microsoft.com/zh-cn/help/196271
网友评论