该文章转自:https://blog.csdn.net/XiaoXiao_RenHe/article/details/78169028?locationNum=10&fps=1
windows服务器下,mysql运行一段时间之后忽然无法连接,但是mysql服务启动正常,连接时报错:
can't connect to mysql server on 'localhost' (10055)
网上搜索了很久,最终确定原因为:
Win32 error code 10055: 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作
出现这种情况我认为重启服务器可以解决,但是治标不治本,一段时间之后仍然会出现此问题。
此问题不是mysql应用程序的问题而是windows server system 的配置问题。因此需要修改windows server system的配置。
具体办法为修改windows 注册表:
有两个相关值,一是修改MaxUserPort(最大连接数);另一个是修改TcpTimedWaitDelay(TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间)
据我的经验推断修改MaxUserPort为最佳。
注册表位置如下,如果没有此项,需要手动添加
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Value Name: MaxUserPort
Value Type: DWORD
Value data: 65534(十进制)
参考并感谢以下博主:
http://www.myexception.cn/mysql/288628.html
http://www.cnblogs.com/tianzhiliang/articles/2400176.html
http://www.111cn.net/database/mysql/37700.htm
https://talk.plesk.com/threads/cant-connect-to-mysql-server-on-localhost-10055.263061/