《构建高性能 Web站点》笔记

书名:构建高性能Web站点linux

出版社: 电子工业出版社apache

ISBN:9787121170935浏览器

 

一  绪论缓存

等待的时间:服务器

(1) 数据在网络上的传输时间网络

(2) 站点服务器处理请求并生成回应数据的时间多线程

(3) 浏览器本地计算和渲染的时间并发

 

二  数据的网络传输负载均衡

数据如何发送异步

(1) 应用程序经过系统函数库接口(如send)向内核发出系统调用

(2) 系统内核将数据从用户态内存区复制到由内核维护的内核缓冲区(这块地址空间的大小有限,须要发送的数据以队列的形式进入)

(3) 内核通知网卡来取数据,网卡将数据复制到网卡缓冲区

(4) 网卡缓冲区的数据完成从字节到位的转换,网卡经过特定的物理装置产生不一样的电信号(铜线)或是光信号(光纤)

 

三  服务器并发处理能力

1  吞吐率

单位时间内服务器处理请求数 单位:reqs/s

2  apache ab 压力测试

3  系统调用的减小对于下降请求处理时间有着不可忽视的做用

4  内存分配

    Apache使用了基于内存池策略的内存管理方案,在运行开始便一次性申请大片内存做为内存池,随后须要的时候在内存池中直接获取,不须要再次分配

    Nginx使用多线程来处理请求,这使得多个线程之间能够共享内存资源,从而是内存整体使用量大大减小

5  持久链接

    在一次TCP链接中持续发送多份数据而不断开链接,与其相反的是短链接,也就是创建链接后发送一份数据便断开,而后再次创建链接发送下一份数据。创建TCP链接的操做开销较大,因此链接次数越少,越有利于性能的提高。主流Web服务器都支持长链接,Apache中默认长链接是打开的,配置文件httpd.conf中 KeepAliveTimeout 5。浏览器和服务器各自超时时间不一样,以最短期为准。

6  I/O模型

    I/O模型分为不少种类型,好比内存I/O,网络I/O,磁盘I/O,这里讲的是网络I/O。

    同步阻塞I/O:默认状况下socket都是阻塞的,进程调用某些涉及I/O操做的函数时,如:connect、accept、recv/recvfrom、send/sendto、closesocket,I/O操做完成后再继续运行

    同步非阻塞I/O:在socket选项中设置O_NONBLOCK能够实现非阻塞I/O,非阻塞I/O经过反复轮询来尝试数据是否就绪,防止进程被阻塞,最大的好处是能够在一个进程中同时处理多个I/O事件

    多路I/O就绪通知:能够同时处理多个connection,容许进程经过同一种方法同时监视全部文件描述符,并能够快速得到全部就绪的文件描述符。当数据就绪后,通常选择非阻塞方式。好比select和linux下的epoll

    异步I/O:主动请求数据后即可以继续处理其余任务,随后等待I/O操做完毕的通知

 

四  动态内容缓存

缓存的目的就是把须要话费昂贵开销的计算结果保存起来,这里指动态内容自行实现缓存机制。

缓存和缓冲类似之处是都须要一块存储区,他们本质都于速度不一致有关,但缓存更加注重策略,也就是说缓存命中率。

分析研究Smarty缓存。

过时检查

局部无缓存

 

六  浏览器缓存

Firefox 地址栏输入about:cache查看缓存,采用二进制文件的方式来存储和管理缓存文件

缓存协商:浏览器向Web服务器请求内容,服务器告诉浏览器哪些能够缓存。下次请求这个内容时,询问服务器是否可使用本地的缓存,服务器收到浏览器询问后须要作出果断回应,究竟是容许浏览器使用本地缓存仍是将最新内容传回浏览器

 

七  Web服务器缓存

 涉及Apache的缓存技术,Apache提供两个扩展,分别是mod_disk_cache和mod_mem_cache,推荐用前者。

 

八  反向代理缓存

正向代理:客户端隐藏在代理服务器以后,代理端代理的是客户端。
反向代理:Web服务器隐藏在代理服务器以后,客户端经过反向代理服务器来间接访问Web服务器。服务端知道客户端,客户端不知道服务端,经过代理端链接服务端。代理端代理的是服务端。向代理的一个目的是基于缓存的加速。

用Nginx做为反向代理服务器,只须要设置proxy_pass指令便可,同时别忘打开mod_proxy模块

 

十二  Web负载均衡

HTTP重定向:当HTTP代理向Web服务器请求某个URL后,Web服务器能够经过HTTP响应头信息中的Location标记来饭后一个新的URL,这意味着HTTP大力须要继续请求这个新的URL,这便完成了自动跳转。HTTP重定向具有了请求转移和自动跳转的本领,因此能够用来实现负载均衡。

DNS负载均衡:DNS服务器能够完成域名到IP地址的一对多的映射,经过这点来实现负载均衡

反向代理负载均衡:核心是转发HTTP请求

IP负载均衡:在HTTP层面一下实现负载均衡,这些负载均衡调度器的工做必须由Linux内核来完成,好比位于内核的Netfilter和IPVS调度器

直接路由:在链路层工做,经过修改数据包的目的MAC地址,将数据包发到实际服务器上,实际服务器的响应数据包井直接发送给用户端,而不通过调度器

IP隧道

 

十八  性能监控

实时监控:Nmon+Nmon Analser

监控代理:SNMP

系统监控:Cacti

 

本书完整版点击下载