因為 MySQL 正在做 DNS 反向解析,所以設定 hosts 檔案讓解析時可以直接對應到,速度就會變得很快了。
若你在撰寫程式開啟 MySQL 連線時,發現光是開啟連線就要花掉 5 秒鐘的時間時,可以在 hosts 檔中加入 IP 及主機名稱對照資料試試。
之前還沒找出問題時,我是利用 Connection Polling 來解決,如此一來只有第 1 次連線時要花費 5 秒鐘,之後透過 Connection Polling 機制速度就很快了,但如果 Polling 被回收了就又要再等 1 次 5 秒鐘,所以不是長久的解決辦法。
後來得知,因為 MySQL 正在做 DNS 反向解析,因為沒有設定對照表,所以處理時間會很久,在此提供 2 種解決方法:
1. | 關閉 MySQL DNS 反向解析: |
在 MySQL 設定檔中 [mysqld] 區段加入 skip-name-resolve 如下: [mysqld] skip-name-resolve 設定完後再重新啟動即可。 註: | |
2. | 設定 hosts 檔案,加入連線端的 IP 及主機名稱對照: |
例如有 2 台電腦,電腦名稱及IP定義如下 連線端電腦名稱 NameFrom 的 IP 為 192.168.1.1 被連線端電腦名稱 NameTo 的 IP 為 192.168.1.2 因此要在 NameTo 電腦的 hosts 中加入下面這一行 192.168.1.1 NameFrom 然後就可以再試試看連線是否變快了。 註: hosts 檔案位置依作業系統不同而有不同, Windows系統一般會是 \windows\system32\drivers\etc\hosts Linux系統一般會是 /etc/hosts |