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