當(dāng)出現(xiàn)網(wǎng)站慢的時(shí)候我們腦子中要映出幾點(diǎn)原因:
1.程序代碼執(zhí)行方面
2.大量數(shù)據(jù)庫(kù)操作
3.域名DNS解析問題
4.服務(wù)器環(huán)境
我也是這么解決的,下面說下解決中的步驟吧。
1.打開訪問慢的網(wǎng)站觀察下情況,通過火狐的fixfox 插件 或者 IE的元素查看工具,你網(wǎng)站里面加載的信息會(huì)一覽無遺的展現(xiàn)出來,并且那些元素加載耗時(shí)多少秒等等情況,如何解決能,把遠(yuǎn)程耗時(shí)久的js下載到本地,或者直接刪除。
2. 我看了下頁面中有多處連接數(shù)據(jù)庫(kù)操作的地方,并且有遠(yuǎn)程的數(shù)據(jù)庫(kù)操作,并且還有多余的數(shù)據(jù)庫(kù)連接代碼,話不多說,改之.
解決完了發(fā)現(xiàn)的確是快點(diǎn)了,但是還是不理想,于是我把頁面執(zhí)行數(shù)據(jù)庫(kù)代碼放到了數(shù)據(jù)庫(kù)中執(zhí)行沒有耗慢的情況。
3. 關(guān)于域名DNS的情況只是其中一種情況,不要急著找域名商的問題,你可以寫個(gè)沒有數(shù)據(jù)操作的頁面放在同臺(tái)服務(wù)器域名下,看看是不是訪問同樣慢,如果是才有可能,你還要讓你周圍的人也看看,最好別是你同公司的人。
4. 我來看看服務(wù)器的情況吧,是不是CPU使用率過高造成的呢。
a. top 發(fā)現(xiàn)cpu使用也不高啊,30% 左右,但是發(fā)現(xiàn)一個(gè)問題,sleeping 的進(jìn)程數(shù)比較多。擦,最好別是僵尸進(jìn)程,現(xiàn)在這樣的東西不多了。
b. 查看了下timewait的量: 發(fā)現(xiàn)有mysqld 和 httpd 的,大部分來自于 httpd ; 命令 netstat -ae|grep TIME_WAIT
如何來解決timewait的量問題呢?
TIME_WAIT解決辦法:
vi /etc/sysctl.conf
編輯文件,加入以下內(nèi)容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 30 保持連接的時(shí)間
net.ipv4.tcp_max_tw_buckets = 100 這個(gè)是設(shè)置服務(wù)器同時(shí)保持的time_wait的數(shù)目
然后執(zhí)行 /sbin/sysctl -p 讓參數(shù)生效。
設(shè)置APACHE 的配置文件:
Timeout 10 與客戶端連接超時(shí)的時(shí)間
KeepAlive On 一次連接可以多次傳輸,使的一次連接中可以傳遞多個(gè)HTTP請(qǐng)求
MaxKeepAliveRequests 50 設(shè)置一次連接內(nèi),可以進(jìn)行多少次請(qǐng)求
KeepAliveTimeout 15 如果服務(wù)器已經(jīng)完成了一次請(qǐng)求,多長(zhǎng)時(shí)間一直沒有接受到下一次請(qǐng)求就會(huì)斷開連接
保存重啟APACHE
設(shè)置完已上的操作后:
netstat -n |awk '/^tcp/{++S[$NF]}END{for (i in S ) print i,S[i]}'
你會(huì)發(fā)現(xiàn)非常成功。
如果還不夠滿意可以 再設(shè)置下Ulimit參數(shù)
cat /etc/security/limits.confEOF
* soft nofile 655350
* hard nofile 655350
EOF
然后ulimit -SHn 了 讓生效。
OK,當(dāng)你再查看的時(shí)候 已經(jīng)發(fā)現(xiàn)比較成功了。
如你發(fā)現(xiàn)mysqld 比較多的話,你可以優(yōu)化下mysql的性能: 見 mysql 性能調(diào)優(yōu)
好,已上都做完了,查看了先time_wait 發(fā)現(xiàn)有很多 百度機(jī)器人作怪挺嚴(yán)重的。 netstat -agn
最后只能忍痛割愛,暫時(shí)把百度蜘蛛在 robots.txt 屏蔽下,這只是暫時(shí)的解決方案。
接下來只能趕緊把首頁做成純靜態(tài)的,Mygod。 到這里就完了。
更多信息請(qǐng)查看IT技術(shù)專欄