啟用 --log-warnings(5.7+ 默認開啟)後,錯誤日志會記錄:
2023-01-15 14:38:23 Aborted connection 854 to db: 'users' user: 'josh'
mysql_close() 或連接池洩漏。wait_timeout(非交互)或 interactive_timeout(交互)秒無活動。默認 8 小時(28800 秒)。上述情況會增加 Aborted_clients 狀態變量。
connect_timeout(默認 10 秒)。此類情況增加 Aborted_connects,可能預示暴力破解嘗試,需關注來源 IP。
| 問題 | 現象 | 排查/解決 |
|---|---|---|
| Linux 雙工模式不匹配 | FTP 傳輸呈「突發-暫停」模式,吞吐極低 | 強制網卡/交換器雙工模式一致(全雙工/半雙工),ethtool -s eth0 speed 1000 duplex full autoneg off |
| 線程庫 Bug | 高併發下隨機連接重置 | 升級 glibc / 使用 NPTL 線程庫 |
| TCP/IP 參數不當 | 大量 TIME_WAIT、連接建立慢 | 調整 net.ipv4.tcp_tw_reuse、tcp_fin_timeout 等內核參數 |
| 硬件故障 | 網線、交換器端口、網卡故障 | 替換法排查,關注 CRC 錯誤計數器 |
max_allowed_packet 過小 |
大查詢/大包報錯 Packet too large |
增大至 64MB+,客戶端同步調整 |
SHOW GLOBAL STATUS LIKE 'Aborted_%'; SHOW GLOBAL STATUS LIKE 'Connection_errors_%'; SHOW GLOBAL STATUS LIKE 'Max_used_connections'; SHOW GLOBAL STATUS LIKE 'Threads_connected';
建議納入監控系統,設置告警閾值(如 Aborted_connects 短時激增)。
idleTimeout < wait_timeout。autoReconnect=true,但生產環境建議應用層重試邏輯)。wait_timeout(如 300 秒),避免僵尸連接佔用槽位。max_allowed_packet、net_read_timeout、net_write_timeout。