Can't connect to MySQL server on 'xx.xx.xx.xx' (4)mysql_pconnect() 緩解半月,流量恢復後失效,甚至重啟無效localhost 而非 IP/域名作為 host,自動走 Unix Socket 避開網絡棧/DNS 解析失敗。| 疑點 | 驗證方法 | 應對 |
|---|---|---|
| 主機名解析失敗 | 配置 localhost + skip-name-resolve | 強制 Socket 連接,消除 DNS 依賴 |
| MySQL 進程 Crash/重啟 | 查錯誤日志 .err、系統日志 dmesg/messages | 修復觸發 Bug 的 SQL/配置,升級版本 |
| 連接數被其他用戶佔滿 | SHOW PROCESSLIST 觀察 User/Host 分布 | 投訴服務商隔離資源/遷移獨享實例/RDS |
| PHP 連接未釋放 | 代碼審計、mysqli_close()、連接池 | 框架層統一管理,禁用長連接 |
| 防火牆/網絡抖動 | 抓包 tcpdump port 3306 | 同機 Socket 繞過網絡層 |
localhost(或 127.0.0.1 配合 skip-name-resolve)database.connections.mysql.strict => false + pdo_options[PDO::ATTR_PERSISTENT] => false)SHOW GLOBAL STATUS LIKE 'Max_used_connections' 記錄峰值,作為投訴證據共享虛擬主機 MySQL 連接失敗本質是多租戶資源隔離缺失,代碼優化只能緩解症狀。localhost + Socket + 連接池 + 遷移獨享 是完整解鏈路。