您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關網站訪問慢的排查方法及解決方案,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
當出現網站慢的時候我們腦子中要映出幾點原因:
1.程序代碼執行方面
2.大量數據庫操作
3.域名DNS解析問題
4.服務器環境
我也是這么解決的,下面說下解決中的步驟吧。
1.打開訪問慢的網站觀察下情況,通過火狐的fixfox 插件 或者 IE的元素查看工具,你網站里面加載的信息會一覽無遺的展現出來,并且那些元素加載耗時多少秒等等情況,如何解決能,把遠程耗時久的js下載到本地,或者直接刪除。
2. 我看了下頁面中有多處連接數據庫操作的地方,并且有遠程的數據庫操作,并且還有多余的數據庫連接代碼,話不多說,改之.
解決完了發現的確是快點了,但是還是不理想,于是我把頁面執行數據庫代碼放到了數據庫中執行沒有耗慢的情況。
3. 關于域名DNS的情況只是其中一種情況,不要急著找域名商的問題,你可以寫個沒有數據操作的頁面放在同臺服務器域名下,看看是不是訪問同樣慢,如果是才有可能,你還要讓你周圍的人也看看,最好別是你同公司的人。
4. 我來看看服務器的情況吧,是不是CPU使用率過高造成的呢。
a. top 發現cpu使用也不高啊,30% 左右,但是發現一個問題,sleeping 的進程數比較多。擦,最好別是僵尸進程,現在這樣的東西不多了。
b. 查看了下timewait的量: 發現有mysqld 和 httpd 的,大部分來自于 httpd ; 命令 netstat -ae|grep TIME_WAIT
如何來解決timewait的量問題呢?
TIME_WAIT解決辦法:
vi /etc/sysctl.conf
編輯文件,加入以下內容:
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 保持連接的時間
net.ipv4.tcp_max_tw_buckets = 100 這個是設置服務器同時保持的time_wait的數目
然后執行 /sbin/sysctl -p 讓參數生效。
設置APACHE 的配置文件:
Timeout 10 與客戶端連接超時的時間
KeepAlive On 一次連接可以多次傳輸,使的一次連接中可以傳遞多個HTTP請求
MaxKeepAliveRequests 50 設置一次連接內,可以進行多少次請求
KeepAliveTimeout 15 如果服務器已經完成了一次請求,多長時間一直沒有接受到下一次請求就會斷開連接
保存重啟APACHE
設置完已上的操作后:
netstat -n |awk '/^tcp/{++S[$NF]}END{for (i in S ) print i,S[i]}'
你會發現非常成功。
如果還不夠滿意可以 再設置下Ulimit參數
cat >>/etc/security/limits.conf<<EOF
* soft nofile 655350
* hard nofile 655350
EOF
然后ulimit -SHn 了 讓生效。
OK,當你再查看的時候 已經發現比較成功了。
如你發現mysqld 比較多的話,你可以優化下mysql的性能: 見 mysql 性能調優
好,已上都做完了,查看了先time_wait 發現有很多 百度機器人作怪挺嚴重的。 netstat -agn
最后只能忍痛割愛,暫時把百度蜘蛛在 robots.txt 屏蔽下,這只是暫時的解決方案。
接下來只能趕緊把首頁做成純靜態的,Mygod。
關于網站訪問慢的排查方法及解決方案就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。