查看: 19368|回复: 40

【站庆】唯快不破:探讨网站性能优化之绝招

[复制链接]
论坛徽章:
127
茶鸡蛋
日期:2012-01-16 14:24:41鲜花蛋
日期:2012-06-06 14:48:18双黄蛋
日期:2013-01-07 21:07:482013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:082014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上加薪
日期:2014-03-18 09:57:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11
跳转到指定楼层
1#
发表于 2014-10-8 16:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

在互联网的世界里,盛行一句“天下功夫唯快不破”,对移动端的用户更是如此。用手机刷网页时,接近六成的用户表示希望网页的加载时间维持在 3 秒内。74% 的受调查者表示他们的等待时间不会超过 5 秒钟,否则后果不堪设想。那么导致网站加载缓慢的原因究竟有哪些呢?


提到性能,大家脑子里很自然地会蹦出“快慢”这样的字眼。诚然,从敲入网址到enter回车键,我们很容易感知网页的快慢,没错,这就是性能。如何通过挖掘这个过程,找到性能优化的绝招,正是我们这次要探讨的话题。除了主观上感受网站的快慢以外,我们还需要客观上认可性能的测试指标,比如响应时间、并发量、吞吐量。我们暂且以高速公路的收费站为例,如果把响应时间看成是一辆车经过收费站的时间,那么并发量就可以理解成这个收费站同时能通行多少辆车,而吞吐量则可以看成在一段时间内,这个收费站通往了多少了车。本期话题,希望能集思广益,共同探讨网站性能优化的绝招,欢迎大家踊跃参与。


话题讨论:


1. 通常我们可以把网站访问时期分为三个区间,日常运行区间、高峰区间、负载过重区间,导致网站加载缓慢的原因究竟有哪些呢?

2. 假如我们把响应时间和并发用户量看成一个二维的坐标图,那么随着并发用户量的增加,响应时间是否会一直增加?在这三个区间里,哪个区间增加的幅度最快?为什么?

3. 假如我们把吐吞量与并发用户量看成一个二维的坐标图,同样在网站的日常运行区间、高峰区间、负载过重区间里,随着并发用户量的增加,吞吐量是否会持续增加?为什么?

4. 我们可以把用户访问网站的流程分为三个阶段,第一个阶段在用户和浏览器端、第二个阶段在网络上、第三个阶段在网站服务器端,以京东商城的HTML简图为例,为什么会将CSS样式放在HTML前面?这三个阶段分别有哪些优化策略来提高网站的性能?

5. 在网站服务器端响应用户访问请求的数据时,大致有两种主要的方式,即异步请求方式和同步请求方式,请参看附件图片谈谈您觉得这两种方式有什么不同?常见的同步请求方式和异步请求方式有哪些应用场景?12306网站买票、京东淘宝购物时采用了哪种请求方式?

6.大部分网站访问都遵循28原则,即80%的访问请求,最终落在20%的数据上。这20%的热点数据将成为我们主要的缓存数据。目前的缓存有两种,一种是本地缓存,另一种是分布式缓存,像新浪微博采用了哪种缓存?

亲们,欢迎大家针对以上问题发表自己的看法,截止11月6日,我们将评选出获奖会员。

最优会员:赠送哈尔斯 500ml不锈钢直身真空保温水杯

活跃会员:赠送社区徽章

     
   获奖会员:
最佳会员:pastime_Wang
活跃会员:
duronshi
lidrema
xuexiaogang
西索哥
i2235932666

论坛徽章:
1943
IT宝贝
日期:2011-01-06 11:22:33生肖徽章:马
日期:2013-08-19 17:30:31生肖徽章:兔
日期:2014-12-03 09:56:42生肖徽章:狗
日期:2014-12-03 09:56:42生肖徽章:虎
日期:2014-08-25 16:22:12IT宝贝
日期:2011-01-06 11:22:33季节之章:春
日期:2014-06-05 12:57:44季节之章:夏
日期:2014-06-05 09:52:01季节之章:秋
日期:2015-01-27 17:00:47季节之章:冬
日期:2013-04-13 11:43:45
来自 19#
发表于 2014-10-9 13:25 | 只看该作者
1. 通常我们可以把网站访问时期分为三个区间,日常运行区间、高峰区间、负载过重区间,导致网站加载缓慢的原因究竟有哪些呢?
a.图像加载
b.不必要的编码
c.托管你站点的服务器类型
d.HTTP请求数量

使用道具 举报

回复
论坛徽章:
27
2014年新春福章
日期:2014-02-18 16:50:09秀才
日期:2015-06-25 15:39:28秀才
日期:2015-06-29 15:26:52秀才
日期:2015-07-03 17:00:53秀才
日期:2015-07-14 09:44:30金牛座
日期:2015-07-21 14:01:36秀才
日期:2015-09-14 10:08:30秀才
日期:2016-02-18 09:24:18秀才
日期:2016-02-18 10:08:02举人
日期:2016-02-24 17:33:17
来自 25#
发表于 2014-10-9 21:03 | 只看该作者
    发表一下愚见,如有问题,欢迎指正:
    数据库中的数据抽取到应用服务器上,这是一步,这个时候,可以把常用的20%的数据缓存到这里,这个过程中可以做一次优化,保证查询效率最高;然后是通过就应用服务器展现到页面,避免了直接通过页面操作数据库,这一过程也可以优化,网站都有数量庞大的用户同时访问,这个时候就需要分流,可以采用多个应用服务器,每个服务器上的用户量变成几分之一,访问速度也会上升。

使用道具 举报

回复
论坛徽章:
4
优秀写手
日期:2014-04-24 06:00:242014年世界杯参赛球队:巴西
日期:2014-05-30 17:09:45itpub13周年纪念徽章
日期:2014-10-08 15:13:38itpub13周年纪念徽章
日期:2014-11-17 17:01:01
来自 26#
发表于 2014-10-10 09:14 | 只看该作者
同步是打电话,发出请求要等回复才进行下一步;异步是发短信,请求发出去就ok。--百度

使用道具 举报

回复
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:42:02秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:51:162015年中国系统架构师大会纪念徽章
日期:2015-09-16 12:54:392014系统架构师大会纪念章
日期:2015-09-16 12:54:392013系统架构师大会纪念章
日期:2015-09-16 12:54:392012系统架构师大会纪念章
日期:2015-09-16 12:54:392011系统架构师大会纪念章
日期:2015-09-16 12:54:392010系统架构师大会纪念
日期:2015-09-16 12:54:39秀才
日期:2015-12-25 15:31:10
来自 27#
发表于 2014-10-10 09:47 | 只看该作者
1. 通常我们可以把网站访问时期分为三个区间,日常运行区间、高峰区间、负载过重区间,导致网站加载缓慢的原因究竟有哪些呢?
答:我觉得日常运行期间一般来说不会出现,这里说的是通常情况。高峰区间出现缓慢或者无响应是常见的,高并发大量的IO和数据交换以及网络质量都会导致加载过慢。负载过重区间是高分区间的延伸。在高峰区间上继续增加访问量使得系统和硬件超负荷运行加剧了网站缓慢。

2. 假如我们把响应时间和并发用户量看成一个二维的坐标图,那么随着并发用户量的增加,响应时间是否会一直增加?在这三个区间里,哪个区间增加的幅度最快?为什么?
答:在没有达到系统承载的拐点的时候,这个访问量的增加几乎对响应时间无影响。所以响应时间不一定会增加。在高峰区间这个增加比较明显,在负载过重的情况下,因为已经产生了巨大延时,所以这个也不是很明显了。

3. 假如我们把吐吞量与并发用户量看成一个二维的坐标图,同样在网站的日常运行区间、高峰区间、负载过重区间里,随着并发用户量的增加,吞吐量是否会持续增加?为什么?
答:我觉得在前两个区域会随着并发量增加而增加,高峰区间达到最大。到了负载过重区间应该不会增加,因为系统根本没有资源给来让排队的并发请求的机会,这些请求并发到不了系统层面,产生的IO请求系统是收不到的。

5. 在网站服务器端响应用户访问请求的数据时,大致有两种主要的方式,即异步请求方式和同步请求方式,请参看附件图片谈谈您觉得这两种方式有什么不同?常见的同步请求方式和异步请求方式有哪些应用场景?12306网站买票、京东淘宝购物时采用了哪种请求方式?
答:两种机制区别是下面的增加了队列机制。同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。比如我们云盘同步就是同步请求。微信我觉得就是异步请求。12306是同步的因为没有选择车票就不能付款。而京东应该算异步的,可以开几个页面选择不同的商品到购物车。

6.大部分网站访问都遵循28原则,即80%的访问请求,最终落在20%的数据上。这20%的热点数据将成为我们主要的缓存数据。目前的缓存有两种,一种是本地缓存,另一种是分布式缓存,像新浪微博采用了哪种缓存?
答:据我所知新浪采用的是基于redis分布式缓存实现。这个算是分布式缓存。

使用道具 举报

回复
论坛徽章:
8
红宝石
日期:2014-08-28 15:18:18紫水晶
日期:2014-08-28 15:18:42祖母绿
日期:2014-09-11 13:38:41itpub13周年纪念徽章
日期:2014-10-08 15:13:38马上有车
日期:2014-10-09 16:50:00蓝锆石
日期:2014-11-05 17:13:52itpub13周年纪念徽章
日期:2014-11-17 17:01:01蓝色妖姬
日期:2015-01-05 17:16:44
来自 32#
发表于 2014-10-11 13:02 | 只看该作者
1. 导致网站加载缓慢的原因很多,从客户端角度来说:主要是用户网速过慢
                                              从服务器端来说:服务器的硬件配置、网络带宽、访问页面过大、并发用户访问量

2. 随着并发用户量的增加,当并发用户量达到某阈值时,响应时间会有所增加。其中,负载过重将直接导致响应时间恶性增长、服务器崩溃

3. 当并发用户访问量达到一定值时,吞吐量也达到最大值,不会再增加

4. 优先加载CSS,本地缓存CSS文件
    第一阶段:用户本地缓存、优化JS解析等
    第二阶段:优化DNS解析,如采用双线IP,电信一个IP,网通一个IP,然后采用dnspod进行智能判断、解析,当网通的用户访问网站时,就用网通的IP来响应,当电信的用户访问时,就用电信的IP来响应,这样大大的加快了页面的加载速度。
    第三阶段:多应用服务器响应用户请求,使用nginx作为负载均衡服务器,提高网站的并发访问能力

5. 目前大部分网站使用的是异步请求,使用异步的好处是并发处理用户请求,多任务执行,对于访问页面来说,人机交互友好。因此,电子商务网站基本上都是异步请求方式。

6. 像新浪这种访问量大的网站,且拥有海量数据,20%也很多,因此采用的都是分布式缓存

使用道具 举报

回复
求职 : Hadoop,大数据
论坛徽章:
14
蜘蛛蛋
日期:2011-12-31 14:06:37秀才
日期:2015-08-06 10:47:08itpub13周年纪念徽章
日期:2014-11-17 17:01:01马上有车
日期:2014-11-17 09:10:282014年世界杯参赛球队:巴西
日期:2014-06-12 16:34:36马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11茶鸡蛋
日期:2013-05-08 00:00:502013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2013-01-27 23:48:55
来自 39#
发表于 2014-10-16 10:33 | 只看该作者
先从入口说起
IDC,全国各地都有自己的服务器,用户请求时,分发到离自己最近的服务器,用户网络暂时忽略
CDN,这也是必须的,没有这些缓存,用户所有请求都要服务器上请求,那么高并发时,反应可能就会有迟顿
CACHE,这也是必须的,自己服务器级别的cache(图片、数据),也就是常说的图片、WEB分离
cluster,这也是必须的,DB、IMAGE、WEB容器等,做负载分发、同步session,或者读写分离库、RAC等
program,然后就是程序设计的优劣了
剩下的再补充

使用道具 举报

回复
论坛徽章:
68
林肯
日期:2013-09-12 15:57:33马自达
日期:2013-10-11 13:52:31路虎
日期:2014-01-26 14:35:49现代
日期:2013-08-29 14:39:50三菱
日期:2013-11-25 11:21:19雪佛兰
日期:2013-09-12 15:55:00一汽
日期:2013-11-28 14:15:05技术图书徽章
日期:2013-12-11 10:11:35技术图书徽章
日期:2013-12-11 10:10:51技术图书徽章
日期:2014-01-14 10:54:13
来自 41#
发表于 2014-10-28 15:32 | 只看该作者
RE:

1. 通常我们可以把网站访问时期分为三个区间,日常运行区间、高峰区间、负载过重区间,导致网站加载缓慢的原因究竟有哪些呢?

1.DNS域名解析: 通过 tracert 命令可跟踪解析过程,一般采用双线IP,自动识别"电信和网通" 连接

2.开发网站的架构和语言: 如 PHP, ASP, ASP.NET JSP 等等,再搭配后台databast与前段APP, AJAX 等等

3.物理环境: 托管机房、输出带宽、高可用性等

4.软硬件配置和OS: 作为服务器的硬件需求自然是主流配置,对于高并发的环境,可能需要更多的server 群集,
  软件方面 linux + apache 比较常用且稳定

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2. 假如我们把响应时间和并发用户量看成一个二维的坐标图,那么随着并发用户量的增加,响应时间是否会一直增加?在这三个区间里,哪个区间增加的幅度最快?为什么?

随着并发用户数的增加,CPU利用率上升,平均响应时间也在增加,但是为指数"增加曲线。

“负载过重区间” 增加的幅度最快

但当并发数增加到很大时,每秒钟都会有很多请求需要处理,会造成进程(线程)频繁切换,真正用于处理请求的时间变少,每秒能够处理的请求数反而变少,

同时用户的请求等待时间也会变大,甚至超过用户的心理底线。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3. 假如我们把吐吞量与并发用户量看成一个二维的坐标图,同样在网站的日常运行区间、高峰区间、负载过重区间里,随着并发用户量的增加,吞吐量是否会持续增加?为什么?

系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,
在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,
原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4. 我们可以把用户访问网站的流程分为三个阶段,第一个阶段在用户和浏览器端、第二个阶段在网络上、第三个阶段在网站服务器端,以京东商城的HTML简图为例,为什么会将CSS样式放在HTML前面?这三个阶段分别有哪些优化策略来提高网站的性能?


用户和浏览器端:
1.HTML 静态化,
2.将 JavaScript 和 CSS 独立成外部文件
3.将 CSS 样式放在页面的上方
4.使用 AJAX 缓存
5.减少 DNS 查询

网络: 负载均衡


网站服务器:

1.数据库集群和库表散列
2.数据冗余
2.镜像

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5. 在网站服务器端响应用户访问请求的数据时,大致有两种主要的方式,即异步请求方式和同步请求方式,请参看附件图片谈谈您觉得这两种方式有什么不同?常见的同步请求方式和异步请求方式有哪些应用场景?12306网站买票、京东淘宝购物时采用了哪种请求方式?

同步请求:使用者通过单个线程调用服务;该线程发送请求,在服务运行时阻塞,并且等待响应。
如果使用者在服务运行的过程中阻塞时崩溃了,当它重新启动时,将无法重新连接到正在进行的调用,所以响应丢失了。使用者必须重复调用过程,并且期望这次不会崩溃。

异步请求:使用者通过两个线程调用服务;一个线程发送请求,而另一个单独的线程接收响应。
如果使用者在发送了请求之后等待响应时崩溃了,当它重新启动时,可以继续等待响应,所以响应不会丢失。

自然是异步请求,用户的体验度更好
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

6.大部分网站访问都遵循28原则,即80%的访问请求,最终落在20%的数据上。这20%的热点数据将成为我们主要的缓存数据。目前的缓存有两种,一种是本地缓存,另一种是分布式缓存,像新浪微博采用了哪种缓存?本地缓存
本地缓存:数据存储在应用代码所在内存空间.优点是可以提供快速的数据访问;缺点是数据无法分布式共享,无容错处理.典型的,如Cache4j;

分布式缓存系统:数据在固定数目的集群节点间分布存储.优点是缓存容量可扩展(静态扩展);缺点是扩展过程中需要大量配置,无容错机制.典型的,如 Memcached;

典型特点:高性能,动态扩展性和高可用性

分布式缓存系统一般与NOSQL相结合,作为NoSQL 的一种重要实现形式,云平台提供高可用的状态存储与可伸缩的应用加速服务

使用道具 举报

回复
求职 : SAP实施
论坛徽章:
261
土豪章
日期:2018-07-10 16:19:05ITPUB18周年纪念章
日期:2018-09-17 10:09:49ITPUB18周年纪念章
日期:2018-09-17 10:12:57妮可·罗宾
日期:2018-10-28 13:07:10ITPUB18周年纪念章
日期:2018-11-13 15:31:24ITPUB18周年纪念章
日期:2018-11-13 15:40:4519周年集字徽章-庆
日期:2019-09-06 18:30:1219周年集字徽章-19
日期:2021-02-03 16:43:4820周年集字徽章-年	
日期:2023-07-21 18:25:26
2#
发表于 2014-10-8 16:26 | 只看该作者
我想要这个杯子

使用道具 举报

回复
论坛徽章:
72
2017金鸡报晓
日期:2017-01-10 15:39:05秀才
日期:2016-01-21 13:37:04秀才
日期:2016-02-18 09:19:48秀才
日期:2016-06-23 14:15:06海蓝宝石
日期:2015-11-20 16:38:13秀才
日期:2017-03-28 15:59:38秀才
日期:2017-03-20 13:42:20秀才
日期:2017-03-01 13:53:39弗兰奇
日期:2016-11-21 09:48:54祖母绿
日期:2015-12-03 16:13:25
3#
发表于 2014-10-8 16:33 | 只看该作者
支持。~

使用道具 举报

回复
论坛徽章:
249
Jeep
日期:2013-09-04 19:17:57Jeep
日期:2013-10-08 09:46:02Jeep
日期:2013-10-08 16:38:27Jeep
日期:2013-11-22 14:53:46Jeep
日期:2013-11-08 23:59:45Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-11-17 09:59:04季节之章:夏
日期:2015-01-28 14:58:51季节之章:春
日期:2014-12-25 16:20:50
4#
发表于 2014-10-8 16:35 | 只看该作者

使用道具 举报

回复
论坛徽章:
345
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36ITPUB社区12周年站庆徽章
日期:2013-08-20 11:30:11凯迪拉克
日期:2013-09-12 15:56:12ITPUB社区12周年站庆徽章
日期:2013-10-17 13:56:59一汽
日期:2013-11-14 21:55:12技术图书徽章
日期:2013-11-19 14:47:26红旗
日期:2013-11-24 12:29:47三菱
日期:2013-11-25 11:21:19保时捷
日期:2013-11-27 09:15:09
5#
发表于 2014-10-8 16:36 | 只看该作者
支持  

使用道具 举报

回复
论坛徽章:
399
6#
发表于 2014-10-8 16:39 | 只看该作者
我想要那杯子

使用道具 举报

回复
论坛徽章:
184
2013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-06-05 15:29:212013年新春福章
日期:2013-06-05 15:29:212013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-06-05 15:29:21马上有房
日期:2014-03-03 16:14:44马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-03-04 16:55:19ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42
7#
发表于 2014-10-8 17:33 | 只看该作者
支持,杯子不错。。。

使用道具 举报

回复
论坛徽章:
0
8#
发表于 2014-10-8 17:57 | 只看该作者
不要枪,杯子是我的

使用道具 举报

回复
9#
发表于 2014-10-9 08:30 | 只看该作者

支持。~

使用道具 举报

回复
10#
发表于 2014-10-9 08:30 | 只看该作者

我想要那杯子

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表