网站打开太慢可能性及排查分析

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进程数受限,甚至内网流量太高等缘由,都有可能致使访问缓慢,具体状况具体分析

 



相关文章
相关标签/搜索