網站打開太慢可能性及排查分析


一、網絡問題

1、臨時性

檢查:ping, mtr,dig,dig+trace 等命令,檢查網絡狀況,DNS
解決:聯系機房或視具體情況而定
eg:http://ping.chinaz.com/
查看各地響應時間

2、網絡不同或距離太遠

檢查:客戶端和機房所在網絡情況
解決:雙線機房或分布式部署,動態DNS,需要考慮成本

3、資源加載慢

檢查:chrome控制台
解決:CDN,合並請求,壓縮頁面代碼,多域名請求(http協議中有對瀏覽器並發請求連接數的限制,IE10,火狐 chrome6)等

二、前端問題

1、瀏覽器太爛

2、頁面設計不佳

檢查:瀏覽器解析時間,是否DOM節點過多,JS有問題等
解決:優化頁面代碼

三、服務端問題

1、服務器狀態

檢查:負載,CPU, 網絡,內存,磁盤空間等使用情況,日志切割
如果單台服務器性能受限,考慮調整為分布式架構,如nginx轉發,DB分庫分表等

2PHP響應慢

Xdebug,Webgrind等調試工具調試源碼
檢查webserver日志中的響應時間
如果服務器整體負載不高,但PHP的數據返回時間過長,在PHP代碼中分段輸出處理時間
如果是高訪問量的在線調試,一般選取一定比例記錄日志,防止日志過多帶來的額外系統開銷
調試指導思想:逐步縮小范圍,定位、優化
平常開發原則:
編寫代碼注重效率,盡可能占用更少的資源
緩存復雜和耗時運算的結果
apc或者xcache等緩存PHPopcode
能異步處理的任務不要馬上處理,如發郵件
依據資源情況對FastCGI配置合適的參數
負載均衡器設好閥值,不要無限制的給后端壓力
接口api設置過期時間,1秒內等

3DB響應慢

讀取慢
檢查:慢查詢日志;
show processlist
查看當前DB狀態,看哪些請求停留較多
top
查看mysql進程的開銷
代碼中記錄SQL和執行時間
解決:
手動執行可疑SQL(注意排除query cache的影響),用explainprofile等工具分析SQL性能
再考慮是否優化索引,或者分庫分表,或者增加緩存
寫入慢
檢查:除讀取慢的檢查方法外,還有
iostat
檢查磁盤IO
查看mysql binlog的寫入速率
解決:增加緩存,分庫分表,優化索引,從業務邏輯上考慮減少DB操作,合並寫入

4、內部網絡消耗太大

5、其他

被攻擊,webserver進程數受限,甚至內網流量過高等原因,都有可能導致訪問緩慢,具體情況具體分析

 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM