[MySQL] 開啟連線緩慢解決方法

因為 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

設定完後再重新啟動即可。

註:
(1) MySQL 設定檔在 Windows 系統下是 my.ini,在 Linux 系統下是 my.cnf。
(2) 這個設定是全域性的,也就是設定 MySQL 不對任何連線做反向解析的動作。
(3) 使用此設定後就不能在 MySQL 的授權表中使用主機名稱,須使用 IP 的方式做設定。
 

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