對于連接問題,服務器錯誤日志是有用的信息源。請參見5.11.1節,“錯誤日志”。如果服務器是用“--log-warnings”選項啟動的,在錯誤日志中可能會發現下述消息:
010301 14:38:23 Aborted connection 854 to db: 'users' user: 'josh'
如果“Aborted connections”(放棄連接)消息出現在錯誤日志中,可能的原因是:
1. 客戶端程序在退出之前未調用mysql_close()。
2. 客戶端的空閑時間超過wait_timeout或interactive_timeout秒,未向服務器發出任何請求。請參見5.3.3節,“服務器系統變量”。
3. 客戶端在數據傳輸中途突然結束。
出現這類情況時,服務器將增加“Aborted_clients”(放棄客戶端)狀態變量。
出現下述情況時,服務器將增加“Aborted_clients”(放棄客戶端)狀態變量。
· 客戶端不具有連接至數據庫的權限。
· 客戶端采用了不正確的密碼。
· 連接信息包不含正確信息。
· 獲取連接信息包的時間超過connect_timeout秒。請參見5.3.3節,“服務器系統變量”。
如果出現這類情況,可能表明某人正試圖侵入你的服務器!
對于放棄客戶端或放棄連接問題,其他可能的源應包括:
· 與Linux一起使用以太網協議,半雙工或全雙工。很多Linux以太網驅動均存在該缺陷。應通過FTP在客戶端和服務器機器之間傳輸大文件來測試該缺陷。如果傳輸處于burst-pause-burst-pause(爆發-暫停-爆發-暫停)模式,表明你遇到了Linux雙工故障。唯一的解決方法是,將網卡和Hub/交換器的雙工模式切換為全雙工或半雙工,并對結果進行測試以確定最佳設置。
· 與線程庫有關的某些問題導致讀取中斷。
· 配置不良的TCP/IP。
· 有問題的以太網、Hub、交換器、電纜等。僅能通過更換硬件才能恰當診斷。
· 變量max_allowed_packet過小或查詢要求的內存超過為mysqld分配的內存。請參見A.2.9節,“信息包過大”。
另請參見A.2.8節,“MySQL服務器不可用”。