zoukankan      html  css  js  c++  java
  • 网站打开太慢可能性及排查分析

    一、网络问题

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

     





  • 相关阅读:
    第二阶段团队冲刺07
    第二阶段团队冲刺06
    第二阶段团队冲刺05
    深入浅出设计模式系列 -- UML类图
    Linux、Mac统计文件夹下的文件数目
    控制反转及依赖注入(IoC/DI)概念
    深入理解MySQL优化原理
    git config的全局和本地配置
    Vim命令速查表
    聊聊kafka的工作原理
  • 原文地址:https://www.cnblogs.com/sanyuanempire/p/6183167.html
Copyright © 2011-2022 走看看