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(十进制)