|
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 的一种重要实现形式,云平台提供高可用的状态存储与可伸缩的应用加速服务 |
|