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