負載均衡架構中網站訪問非常慢,但網站部署在主站上不慢,排查是因為數據庫連接速度慢。內網連接不應該這么慢才對
故障描述:
測試環境下訪問 http://www.xlyVPS.com很慢。我測試了一下,確實很慢。
192.168.88.192這臺服務器上裝有lnmp所以都是走本地的,而且是內網的測試服務器沒有負載,所以應該不會出現慢的情況。
排查過程:
我使用這臺服務器上的mysql客戶端連入mysqld,使用命令查詢數據很快。
查看了程序鏈接mysqld的配置,發現是用192.168.88.192這個ip,我就修改成了127.0.0.1 ,后來發現程序速度明顯快了很多。
把程序中連接mysqld的配置修改為192.168.88.192,并在/etc/hosts 加入’192.168.88.192 localhost’,修改后速度確實也是很快的。
主要是DNS的問題,因為是內網的服務器,無法訪問DNS服務器。
解決辦法:
1:ssh慢的處理
修改一下ssh的配置,關閉DNS,另外按網上的說法,連GSSAPI驗證一并關掉。操作如下:
將UseDNS和GSSAPIAuthentication都設置為no。
#GSSAPIAuthentication yes
GSSAPIAuthentication no
#UseDNS yes
UseDNS no
然后,重啟ssh服務。
/etc/init.d/sshd restart
2:mysql慢的處理
在mysqld節增加一句話,不使用DNS即可。
[mysqld]
skip-name-resolve
skip-grant-tables
說明:skip-name-resolve 選項就能禁用DNS解析,連接速度會快很多。不過,這樣的話就不能在mysql的授權表中使用主機名了而只能用ip格式。
若使用–skip-grant-tables系統將對任何用戶的訪問不做任何訪問控制,但可以用 mysqladmin flush-privileges或mysqladmin reload來開啟訪問控制;默認情況是show databases語句對所有用戶開放,
如果mysql服務器沒有開遠程帳戶,就在my.cnf里面加上skip-grant-tables
/etc/init.d/mysqld restart
3.遇到DNS解析導致慢解決思路
查看服務器的/etc/resolv.conf ,配置是192.168.88.192作為dns,可能是網絡變更后dns是192.168.77.192。于是便修改了dns配置。
但是后來又發現網卡的掩碼也不對,導致無法ping通192.168.88.192,于是便將網卡的配置重新修改了一下。
故障徹底恢復。
最后,通過抓包發現有很多反向解析的記錄。
結論:
在程序運行的過程中,都會做DNS的反向解析。而在DNS有問題的情況下,會導致DNS查詢超時,從而導致程序訪問起來非常慢。