《构建高性能 Web站点》笔记
书名:构建高性能Web站点
出版社: 电子工业出版社
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
本书完整版点击下载
《构建高性能 Web站点》笔记的更多相关文章
- HTML+CSS笔记 CSS笔记集合
HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...
- CSS笔记--选择器
CSS笔记--选择器 mate的使用 <meta charset="UTF-8"> <title>Document</title> <me ...
- HTML+CSS笔记 CSS中级 一些小技巧
水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...
- HTML+CSS笔记 CSS中级 颜色&长度值
颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{co ...
- HTML+CSS笔记 CSS中级 缩写入门
盒子模型代码简写 回忆盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左. 语法: margin:10px 15p ...
- HTML+CSS笔记 CSS进阶再续
CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...
- HTML+CSS笔记 CSS进阶续集
元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...
- HTML+CSS笔记 CSS进阶
文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...
- HTML+CSS笔记 CSS入门续集
继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代(标签). 语法: p{color:red;} <p> ...
- HTML+CSS笔记 CSS入门
简介: </span>年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的<span>脚本解释程序</span>,作为ABC语言的一种继承. & ...
随机推荐
- 解析C#彩色图像灰度化算法的实现代码详解
http://www.jb51.net/article/37067.htm public static Bitmap MakeGrayscale(Bitmap original) { ...
- 孙鑫视频VC++深入详解学习笔记
孙鑫视频VC++深入详解学习笔记 VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Le ...
- c# extern 关键字
TEST.DLL 项目引用TEST.DLL 调用其中的方法 结果如下:
- [实战篇]Tomcat发布项目-虚拟目录
在二阶段学习的过程中,我一直使用MyEclipse的方式把工作空间的项目发布到webapps目录下,这种方式自我感觉在实际开发中应用能在70%左右,但是如何涉及到一些上传操作等操作, 从新发布项目之后 ...
- ubuntu环境下添加中文输入法
1.下载软件包 打开终端,输入命令 sudo apt-get install fcitx-table-wbpy 2.打开 system settings-> language support-& ...
- bzoj 1367: [Baltic2004]sequence
1367: [Baltic2004]sequence Time Limit: 20 Sec Memory Limit: 64 MB Description Input Output 一个整数R Sa ...
- bzoj 2453: 维护队列
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1079 Solved: 503[Submit][Status][Discuss ...
- 很好的脑洞题:dfs+暴力 Gym - 101128A Promotions
http://codeforces.com/gym/101128 题目大意:给你一个a,b,e,p.有e个点,p条有向边,每条边为(x,y),表示x->y,每次我们都取出一个入度为0的,并且一次 ...
- 维护后面的position sg函数概念,离线+线段 bzoj 3339
3339: Rmq Problem Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1160 Solved: 596[Submit][Status][ ...
- 莫队 Codeforces Round #340 (Div. 2) E
题目大意:给你一个长度为n的序列,有m个询问,每次询问一个区间[L,R],表示这个区间内,有多少的a[i]^a[i+1].....^a[j]=k. 思路:莫队去搞就好了 我们定义pre[i]=a[1] ...