构建高性能Web站点(读书笔记)

用户等待的时间:

  1. 数据在网络上传输的时间
  2. 站点服务器处理请求并生成回应数据的时间
  3. 浏览器本地计算和渲染的时间

数据在网络上传输的时间总的来说包括两部分,即浏览器端主机发出的请求数据经过网络到达服务器的时间,以及服务器的回应数据经过网络回到浏览器端主机的时间。这两部分时间都可以视为某一大小的数据从某主机开始发送一直到另一端主机全部接收所消耗的总时间,我们称它为响应时间,它的决定因素主要包括发送的数据量和网络带宽。

站点服务器处理请求并生成回应数据的时间主要消耗在服务器端,包括非常多的环节,我们一般用另一个指标来衡量这部分时间,即每秒处理请求数,也称吞吐率,注意这里的吞吐率不是指单位时间处理的数据量,而是请求数。影响服务器吞吐率的因素非常多,比如服务器的并发策略、I/O模型、I/O性能、CPU核数等,当然也包括应用程序本身的逻辑复杂度等。

浏览器本地计算和渲染的时间自然消耗在浏览器端,它依赖的因素包括浏览器采用的并发策略、样式渲染方式、脚本解释器的性能、页面大小、页面组件的数量、页面组件缓存状况、页面组件域名分布以及域名DNS解析等,并且其中一些因素随着各厂商浏览器版本的不同而略有变化。

瓶颈效应(东风效应)-动态的关键因素(性能瓶颈)

增加带宽

减少网页中的HTTP请求

加快服务器脚本解释器计算速度

使用动态内容缓存

使用数据缓存

动态内容静态化

更换Web服务器软件

页面组件分离

合理部署服务器(CDN)

负载均衡

  • HTTP重定向
  • 基于DNS的轮询解析
  • 反向代理服务器来实现负载均衡调度
  • LVS组件服务器集群

优化服务器

  • 数据通信一般基于TCP
  • 通信连接的建立和释放涉及代表一段内核高速缓冲区的文件描述符的创建和销毁,这需要不少的时间开销,包括系统调用导致的内核态切换以及某些异步阻塞I/O模型采用的文件描述符队列扫描机制。
  • 解决方案:数据库持久连接(持久连接的应用范围和生命周期)
    • 全局数据库连接
    • 跨进程的数据库连接池
    • 动态内容执行周期,代码层面的持久连接对象
  • 数据引擎,索引,横向扩展,负载均衡……..

考虑可扩展性

当系统负载增大时,通过增加资源来提高性能的能力

  • 适应负载的变化
  • 局部性能的思考
  • 了解何时需要扩展

减少视觉等待(人机交互)

数据在网络中传输

分层网络模型:OSI七层网络模型,TCP四层网络模型

  • 地址转换(NAT)
    • 路由器将私有地址转换为公有地址使数据包能够发到因特网上,同时从因特网上接收数据包时,将公用地址转换为私有地址。
    • 新IP,广播查询
    • 安全问题,地址关系绑定
  • 传输包TCP
    • 增加信息来确保数据完整性,传输速度
  • 应用层数据包:HTTP,SSH,FTP

网络节点是指一台电脑或其他设备与一个有独立地址和具有传送或接收数据功能的网络相连。节点可以是工作站、客户、网络用户或个人计算机,还可以是服务器、打印机和其他网络连接的设备。每一个工作站﹑服务器、终端设备、网络设备,即拥有自己唯一网络地址的设备都是网络节点。整个网络就是由这许许多多的网络节点组成的,把许多的网络节点用通信线路连接起来,形成一定的几何关系,这就是计算机网络拓扑。

节点物理地址,MAC(Media Access Control或者Medium Access Control)地址。网卡MAC码是由全球惟一的一个固定组织来分配的,未经认证和授权的厂家无权生产网卡。

网络接口负责将节点内部总线中的字节数据和线路中传输的二进制信号进行相互转换

数据帧(Data frame),就是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息,MAC地址等;数据部分则包含网络层传下来的数据,比如IP数据包。

网络拓扑结构
总线,星形

电路交换方式(电话实现)

数据链路层的流量控制
TCP差错控制,选择重发
这里写图片描述

这里写图片描述

集线器和交换机

1.从OSI体系结构来看,集线器属于OSI第一层物理层设备,而交换机属于OSI的第二层数据链路层设备。也就意味着集线器只是对数据的传输起到同步、放大和整形的作用,对数据传输中的短帧、碎片等无法进行有效的处理,不能保证数据传输的完整性和正确性;而交换机不但可以对数据的传输做到同步、放大和整形,而且可以过虑短帧、碎片等。

2.从工作方式来看,集线器是一种广播模式,也就是说集线器的某个端口工作的时候,其他所有端口都能够收听到信息,容易产生广播风暴,当网络较大时网络性能会受到很大的影响。而交换机就能够避免这种现象,当交换机工作的事后,只有发出请求的端口和目的端口之间相互相应而不影响其它端口,因此交换机就能够隔离冲突与病有效的抑制广播风暴的产生。

3.从带宽来看,集线器不管有多少个端口,所有端口都是共想一条带宽,在同一时刻只能有两个端口传送数据其它端口只能等待,同时集线器只能工作在半双工模式下;而对于交换机而言,每个端口都有一条独占的带宽,当两个端口工作时并不影响其它端口的工作,同时交换机不但可以工作在半双工模式下且可以工作在全双工模式下。

带宽

数据发送过程(主机->线路)

这里写图片描述

电磁波速度

传播介质,铜线电信号,光纤光信号(全反射),速度接近常量
可见光电磁波 真空 传播速度

数据发送速度(带宽)

因素:

这里写图片描述

传输距离:信号衰减
- 例子:计算机总线带宽
- 提高总线频率 64位系统
- 提高总线宽度 使用主频更高的处理器

限制带宽原因:(带宽有限)

这里写图片描述

MRTG Max Speed(不保证显示真实带宽,可以观察流量图) 最大接受速度
独享带宽:独享路由器一部分出口带宽
客户端下载速度<服务器发送速度

响应时间

下载速度(B/s):传输数据字节数/数据发送完全到用户的时间(响应时间)
响应时间 = 发送时间(多个交换节点的数据量/带宽) + 传播时间(传播距离/2*10^8m/s) + 处理时间(该数据在缓冲区队列中排队所花费的时间,取决于网络数据通信量)