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

1、網絡問題前端

1、臨時性mysql

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

2、網絡不一樣或距離太遠nginx

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

3、資源加載慢sql

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

2、前端問題後端

1、瀏覽器太爛api

2、頁面設計不佳瀏覽器

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

3、服務端問題

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進程數受限,甚至內網流量太高等緣由,都有可能致使訪問緩慢,具體狀況具體分析

 



相關文章
相關標籤/搜索