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


    一、网络问题

    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进程数受限,甚至内网流量过高等原因,都有可能导致访问缓慢,具体情况具体分析

     





  • 相关阅读:
    准爸爸日记之二
    生日的纪念
    未将对象引用设置到对象的实例未将对象引用设置到对象的实例(C#)
    读《中国合伙人》
    Command模式实例(C#)
    开源的C#项目
    抽象工厂模式(C#)
    桥模式(Bridge Pattern)
    抽象工厂模式实例(C#)
    适配器模式实例(C#)
  • 原文地址:https://www.cnblogs.com/sanyuanempire/p/6183167.html
Copyright © 2020-2023  润新知