1、網絡問題前端
1、臨時性mysql
檢查:ping, mtr,dig,dig+trace 等命令,檢查網絡情況,DNS等
解決:聯繫機房或視具體狀況而定
eg:http://ping.chinaz.com/ 查看各地響應時間ios
2、網絡不一樣或距離太遠nginx
檢查:客戶端和機房所在網絡狀況
解決:雙線機房或分佈式部署,動態DNS,須要考慮成本web
3、資源加載慢sql
檢查:chrome控制檯
解決:CDN,合併請求,壓縮頁面代碼,多域名請求(http協議中有對瀏覽器併發請求鏈接數的限制,IE是10,火狐 chrome是6)等chrome
2、前端問題後端
1、瀏覽器太爛api
2、頁面設計不佳瀏覽器
檢查:瀏覽器解析時間,是否DOM節點過多,JS有問題等
解決:優化頁面代碼
1、服務器狀態
檢查:負載,CPU, 網絡,內存,磁盤空間等使用狀況,日誌切割
若是單臺服務器性能受限,考慮調整爲分佈式架構,如nginx轉發,DB分庫分表等
2、PHP響應慢
用Xdebug,Webgrind等調試工具調試源碼
檢查webserver日誌中的響應時間
若是服務器總體負載不高,但PHP的數據返回時間過長,在PHP代碼中分段輸出處理時間
若是是高訪問量的在線調試,通常選取必定比例記錄日誌,防止日誌過多帶來的額外系統開銷
調試指導思想:逐步縮小範圍,定位、優化
日常開發原則:
編寫代碼注重效率,儘量佔用更少的資源
緩存複雜和耗時運算的結果
用apc或者xcache等緩存PHP的opcode
能異步處理的任務不要立刻處理,如發郵件
依據資源狀況對FastCGI配置合適的參數
負載均衡器設好閥值,不要無限制的給後端壓力
接口api設置過時時間,1秒內等
3、DB響應慢
讀取慢
檢查:慢查詢日誌;
show processlist 查看當前DB狀態,看哪些請求停留較多
top查看mysql進程的開銷
代碼中記錄SQL和執行時間
解決:
手動執行可疑SQL(注意排除query cache的影響),用explain,profile等工具分析SQL性能
再考慮是否優化索引,或者分庫分表,或者增長緩存
寫入慢
檢查:除讀取慢的檢查方法外,還有
iostat 檢查磁盤IO
查看mysql binlog的寫入速率
解決:增長緩存,分庫分表,優化索引,從業務邏輯上考慮減小DB操做,合併寫入
4、內部網絡消耗太大
5、其餘
被攻擊,webserver進程數受限,甚至內網流量太高等緣由,都有可能致使訪問緩慢,具體狀況具體分析