刚刚看到有人支持我写的博客,表示仍是比较感动的,发现热心的用户在个人博客留言说“一个系统天天有200万在线用户,问我怎么设计性能场景?”,其实这个问题呢就属于业务没理清,这个问题就像我问你,一个城市一天有一百万人出行,请帮我找出交通压力哪里最大?这个问题一问你便知道无从下手了。javascript
好了,咱们接着来学习今天的内容,以前说了后端协议的知识,今天来讲说前端的分析,在讲述前端分析以前,你们能够先去看一本书《高性能网址建设指南》,虽然书是十年前的,可是思想仍是能够的,我在这先给你们列一下书里面的主要思想。css
《高性能网址建设指南》书中有个关于前端优化的黄金原则:只有10%~20%最终用户响应时间花在了下载HTML文档上,其他80%~90%时间花在了下载页面的全部组件上。并提出了14个对应的规则,接下来我简单提一下这14个规则,详细的能够去找书看下。html
上面说了那么多,我想要不举个实例给你们看看吧,既然如今腾讯这么有钱,咱们就去看看腾讯的网站吧,咱们用谷歌去访问下www.qq.com看一下qq官网的性能如何。前端
咱们从这个点能够看得出来,访问qq首页有215个请求,大小为3.1M,总共耗时15.44秒,固然可能有个别不重要的请求拖慢了速度,咱们能够看到大部分请求完成是在6秒左右,可是这也说明了qq的网站可能仍是存在一些前端性能问题的,咱们来具体看几个请求,从上往下来看:java
第一个请求以下:从第一个请求来看,总共花了158.76ms,虽然不是很大可是这个是个什么请求咱们不太清楚,由于我没看到具体返回,有多是将用户信息发送给服务端吧。linux
我先说下耗时的组成和具体含义:web
接着咱们看第二个主要的请求:能够看到这个请求的返回是标准的html和内嵌了css和js,并未进行压缩,并且也是混写的,因此其实这个返回是能够进行优化的。数据库
接着咱们能够去看,基本上一半的请求都是下载图片,我想这么图片的请求是否是又能够再进行优化呢(一个页面200多个请求我的感受是不少的,由于每个请求就是一次交互过程,若是一台服务器总的hps(hit per second)是固定的,请求数越少是否是就意味着能支持的并发数就会越多呢?尤为是对腾讯大公司而言,假设首页减小10个请求,100w的用户的访问,那么就能够减小总共1000w的请求呢,那么这个是否是就意味着能够减小上百台甚至更多的服务器了呢?因此我感受qq的性能估计是服务器累出来的,但这个能省的钱是否是还能再省一点呢?好比请一个好一点的性能专家呢?哈哈哈,开个玩笑哈!)?我相信qq的首页前端仍是有必定的优化空间的(当前访问qq慢也有我的网速不是太好的缘由,不要太计较哈,嘻嘻)。后端
好了,咱们接着来学习吧,在性能测试的时候,我想最重要的应该仍是“分析思路”,猜想(根据监控和经验(因此说要很广的知识面))->测试->验证->确认,这四个过程不断循环,这就是性能的分析思路。缓存
这里提一点,大部分性能问题来源于数据库喔!
一直说性能须要很广的知识面,这个是必然的,别人写一个东西,若是你不清楚别人怎么写的并且知道怎么写才更好,又怎么能帮助别人调优呢?因此具有开发、监控、网络、数据库、配置等能力都是必不可少的,固然还得有编写报告和必定的逻辑思惟能力喔!
今天的最后咱们来讲一下性能调优的一些思路:
前三天的课程咱们已经将性能的总体思路给你们理了下,接下来的几天我会跟你们讲解下性能的又一大难点--->性能监控,可能须要有必定的linux基础,能够提早学习下喔!