高峰期每秒 20+ 插入,隨機出現 PHP Warning: mysql_connect(),刷新即恢復。環境:Win2003 + IIS6 + PHP 5.4 + MySQL 5.1。
Windows 默認動態端口範圍 1024~5000,TIME_WAIT 默認 240 秒。高並發短連接導致端口快速耗盡,新連接無可用端口而失敗。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"MaxUserPort"=dword:0000fffe ; 擴大至 65534 (最大)
"TcpTimedWaitDelay"=dword:0000001e ; 縮短 TIME_WAIT 至 30 秒 (默認 240)
"TcpNumConnections"=dword:00fffffe ; 最大連接數
mysql_pconnect 或 PDO ATTR_PERSISTENT => true,複用連接減少握手/端口佔用。INSERT INTO ... VALUES (...),(...),(...) 減少 Round-trip。netstat -an | find /c "TIME_WAIT" // 優化前數萬,優化後應大幅下降