如果發生連線問題,例如通訊錯誤或連線中止,請使用下列資訊來源來診斷問題
錯誤日誌。請參閱 第 7.4.2 節「錯誤日誌」。
一般查詢日誌。請參閱 第 7.4.3 節「一般查詢日誌」。
Aborted_
和xxx
Connection_errors_
狀態變數。請參閱 第 7.1.10 節「伺服器狀態變數」。xxx
主機快取,可使用 Performance Schema
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
狀態變數,並將 中止連線 訊息記錄到錯誤日誌。原因可能是下列任何一種
用戶端程式在結束前未呼叫
mysql_close()
。用戶端閒置時間超過
wait_timeout
或interactive_timeout
秒,而沒有向伺服器發出任何要求。請參閱 第 7.1.8 節「伺服器系統變數」。用戶端程式在資料傳輸過程中突然結束。
中止連線或中止用戶端問題的其他原因
max_allowed_packet
變數值太小,或查詢需要的記憶體超出您為 mysqld 分配的記憶體。請參閱 第 B.3.2.8 節「封包過大」。Linux 中使用乙太網路協定,包括半雙工和全雙工。某些 Linux 乙太網路驅動程式有這個錯誤。您應該透過在用戶端和伺服器機器之間使用 FTP 傳輸大型檔案來測試這個錯誤。如果傳輸以突發-暫停-突發-暫停模式進行,則表示您正在經歷 Linux 雙工症候群。請將網路卡和集線器/交換器的雙工模式切換為全雙工或半雙工,並測試結果以確定最佳設定。
執行緒程式庫的問題,導致讀取時中斷。
TCP/IP 設定錯誤。
乙太網路、集線器、交換器、纜線等故障。只能透過更換硬體才能正確診斷此問題。