Error 2006 表示客戶端與 Server 連線中斷。常見於大批量匯入、長時間閒置、大封包傳輸。本文給出配置調優與應用層重連策略。
[mysqld] # 最大允許封包,預設 4M/64M,大批次 INSERT/大欄位需調大 max_allowed_packet = 256M # 連線閒置超時,預設 8h (28800s),長連線池需配合應用層心跳 wait_timeout = 28800 interactive_timeout = 28800 # 關閉 DNS 反解析,加快連線建立 skip_name_resolve = 1
修改後必須重啟 MySQL 生效。
testWhileIdle=true、validationQuery=SELECT 1、minEvictableIdleTimeMillis < wait_timeout。INSERT 行數控制在 1000-5000,避免超過 max_allowed_packet。SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'; 確認生效值。SHOW GLOBAL STATUS LIKE 'Aborted_connects'; 連線被中斷計數。/var/log/mysqld.log 是否有 Killed / Out of memory。Threads_connected、Max_used_connections 是否觸及 max_connections。Error 2006 本質是連線斷開。雙管齊下:Server 端調大封包與超時、關閉 DNS 反解;Client 端連線池驗證、重試、拆分大批次。建立監控告警,早發現早處理。