zoukankan      html  css  js  c++  java
  • 优化Web中的性能

    优化Web中的性能

    简介

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

    web请求的流程及节点

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

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

    定位的方法

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

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

    浏览器

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

    例如:

    定位结果

    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

  • 相关阅读:
    Python学习札记(十五) 高级特性1 切片
    LeetCode Longest Substring Without Repeating Characters
    Python学习札记(十四) Function4 递归函数 & Hanoi Tower
    single number和变体
    tusen 刷题
    实验室网站
    leetcode 76. Minimum Window Substring
    leetcode 4. Median of Two Sorted Arrays
    leetcode 200. Number of Islands 、694 Number of Distinct Islands 、695. Max Area of Island 、130. Surrounded Regions 、434. Number of Islands II(lintcode) 并查集 、178. Graph Valid Tree(lintcode)
    刷题注意事项
  • 原文地址:https://www.cnblogs.com/mypath/p/5312996.html
Copyright © 2011-2022 走看看