楼主: pipihappy8888

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

[复制链接]
论坛徽章:
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 的一种重要实现形式,云平台提供高可用的状态存储与可伸缩的应用加速服务

使用道具 举报

回复

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

本版积分规则 发表回复

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