如果發生連線問題,例如通訊錯誤或連線中止,請使用以下資訊來源來診斷問題
錯誤日誌。請參閱第 7.4.2 節,「錯誤日誌」。
一般查詢日誌。請參閱第 7.4.3 節,「一般查詢日誌」。
Aborted_
和xxx
Connection_errors_
狀態變數。請參閱第 7.1.10 節,「伺服器狀態變數」。xxx
主機快取,可以使用效能架構的
host_cache
表格存取。請參閱第 7.1.12.3 節,「DNS 查詢與主機快取」,以及第 29.12.22.3 節,「host_cache 表格」。
如果 log_error_verbosity
系統變數設定為 3,您可能會在錯誤日誌中找到類似這樣的訊息
[Note] Aborted connection 854 to db: 'employees' user: 'josh'
如果用戶端甚至無法連線,伺服器會遞增 Aborted_connects
狀態變數。連線嘗試失敗的原因可能如下:
用戶端嘗試存取資料庫,但沒有該資料庫的權限。
用戶端使用不正確的密碼。
連線封包未包含正確的資訊。
取得連線封包所需的時間超過
connect_timeout
秒。請參閱第 7.1.8 節,「伺服器系統變數」。
如果發生這些情況,可能表示有人試圖入侵您的伺服器!如果已啟用一般查詢日誌,這些類型的問題訊息會記錄在其中。
如果用戶端成功連線,但之後不正確地斷線或被終止,伺服器會遞增 Aborted_clients
狀態變數,並在錯誤日誌中記錄 Aborted connection 訊息。原因可能是下列任何一項:
用戶端程式在結束前未呼叫
mysql_close()
。用戶端閒置超過
wait_timeout
或interactive_timeout
秒,而未向伺服器發出任何請求。請參閱第 7.1.8 節,「伺服器系統變數」。用戶端程式在資料傳輸過程中突然結束。
導致連線中止或用戶端中止的其他問題原因
max_allowed_packet
變數值太小,或查詢需要的記憶體大於您為 mysqld 分配的記憶體。請參閱第 B.3.2.8 節,「封包過大」。Linux 上使用乙太網路協定,包括半雙工和全雙工。某些 Linux 乙太網路驅動程式有此錯誤。您應該透過在用戶端和伺服器機器之間使用 FTP 傳輸大型檔案來測試此錯誤。如果傳輸以突發-暫停-突發-暫停模式進行,則您正在遇到 Linux 雙工症候群。將您的網路卡和集線器/交換器的雙工模式切換為全雙工或半雙工,並測試結果以確定最佳設定。
執行緒程式庫的問題,導致讀取時發生中斷。
設定錯誤的 TCP/IP。
乙太網路、集線器、交換器、纜線等故障。只能透過更換硬體來正確診斷此問題。