优化Web中的性能

优化Web中的性能

简介

web的优化就是一场阻止http请求最终访问到数据库的战争。
优化的方式就是加缓存,在各个节点加缓存。html

web请求的流程及节点

熟悉流程及节点,才能定位性能的问题。并且优化的顺序通常也是按请求的流程逐一优化。这里的流程只是作个概要,并不表明全面。前端

整个流程是以最快的方式让用户看到结果
nginx

定位的方法

思路是:把看不见的http,具体化、可视化web

定位是优化的前提。没有准确的定位就没法有效的解决问题。算法

浏览器

  1. 看整个请求的时间
  2. 看整个页面加载的时间
  3. 看页面加载的数据大小
  4. 看页面请求数

例如:
sql

定位结果数据库

  1. 是后台请求慢
  2. 是前端加载慢(document,js,image,request数等)

服务器监控

  1. 看整个请求的时间
  2. 看sql的时间(这个在数据库经过慢日志也能够)

例如:

浏览器

定位结果缓存

  1. 哪些url是慢的
  2. 哪些url是最经常使用的
  3. 哪些sql是慢的

代码的监控

  1. 经过System.out.print或者打断点来定位
  2. 给每一个方式添加一个aop,监控期执行时间
    例如:服务器

    long begin = System.currentTimeMillis();
    //执行的方法或者代码
    long end = System.currentTimeMillis();
    System.out.print("一共执行时间:"+(end-begin));

定位结果

  1. 哪个方法或者哪一段代码性能慢

数据库的监控

  1. 慢日志

定位结果

  1. 哪些sql是慢的。

解决方案

思路:针对于http请求的节点按顺序解决。暂时不考虑从分布式群集的解决方案入手优化。

优化代理

  1. 加gzip(减小http的请求数据量)
  2. 加静态资源的缓存
  3. nginx缓存集成url级别的缓存
  4. 动静分离

优化web容器

  1. 优化迸发协议

优化应用

  1. 添加缓存
  2. 减小IO(减小循环的io,经过批量获取,而后在代码级别去处理,优化算法,把树状的复杂度变为平级复杂度)

优化数据库

  1. 添加索引
  2. 加冗余数据
  3. 修改表结构设计(这个很重要,有的时候是由于表设计不合理致使的,能够经过调整设计来解决)
  4. 添加缓存

其余说明

优化的方面不只限于上面的方法。有些也没有一一赘述。好比说:加内存也是优化的不错解决方案。还有操做系统级别,io读写,网络请求等问题。

 

原连接http://www.cnblogs.com/ansn001/p/5301134.html

相关文章
相关标签/搜索