今天公司數據庫出現了停頓和阻塞的問題,檢查數據庫的時候發現,show processlist;可以看到大量:
....
: 3436942 : unauthenticated user : 192.168.0.4:49607 : : Connect : : login :
: 3436943 : unauthenticated user : 192.168.0.4:49608 : : Connect : : login :
.....
不斷有未驗證的用戶嘗試登錄卻沒有通過,有同學Google出來,發現是和域名解析有關系:
不管什麼客戶端連接上來,服務器端都會對客戶端進行DNS反查,來獲得客戶端的域名或主機名。
很有可能是因為DNS服務器出了問題,才導致無法解析——雖然解析出來的結果應該是沒有
同學通過在my.cnf中加入skip-name-resolve
來禁止反向域名解析(或者在啟動命令行中添加參數--skip-name-resolve
。
這種方式也是推薦的MySQL優化方式之一。
但這種方式的缺點是,權限中的host不能再使用主機名,而要使用IP地址,所幸我們配置的是“%
”,因此我比較傾向於使用另一種方式,就是在/etc/hosts
文件中添加對應的host記錄。