构建高性能Web站点

构建高性能Web站点

作者:郭欣

出版社:电子工业

出版年:2009年8月

评分:8.8

ISBN:9787121093357

所属分类:网络科技

书刊介绍

《构建高性能Web站点》内容简介

本书围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、数据库I/O优化、数据库访问、数据库分布式设计、负载均衡、分布式文件系统、性能监控等。在这些内容中充分抓住本质并结合实践,通过通俗易懂的文字和生动有趣的配图,让读者充分并深入理解高性能架构的真相。
同时,本书充分应用跨学科知识和科学分析方法,通过宽泛的视野和独特的角度,将本书的内容展现得更加透彻和富有趣味。
郭欣,曾在腾讯网基础平台研发团队,负责诸多Web应用的开发和技术管理,并致力于性能研究和实践推广.在加入腾讯之前,获得国家系统分析师职称.目前在工作之余从事独立研究,其中包括高性能Web架构和Web敏捷开发框架,并且积极投身开源事业,同时在为SmartcDeveloper系列进行创作.

作品目录

第1章:绪论
1.1、等待的真相
1.2、瓶颈在哪里
1.3、增加带宽
1.4、减少网页中的HTTP请求
1.5、加快服务器脚本计算速度
1.6、使用动态内容缓存
1.7、使用数据缓存
1.8、将动态内容静态化
1.9、更换Web服务器软件
1.10、页面组件分离
1.11、合理部署服务器
1.12、使用负载均衡
1.13、优化数据库
1.14、考虑可扩展性
1.15、减少视觉等待
第2章:数据的网络传输
2.1、分层网络模型
2.2、带宽
2.3、响应时间
2.4、互联互通
第3章:服务器并发处理能力
3.1、吞吐率
3.2、CPU并发计算
3.3、系统调用
3.4、内存分配
3.5、持久连接
3.6、I/O模型
3.7、服务器并发策略
第4章:动态内容缓存
4.1、重复的开销
4.2、缓存与速度
4.3、页面缓存
4.4、局部无缓存
4.5、静态化内容
第5章:动态脚本加速
5.1、opcode缓存
5.2、解释器扩展模块
5.3、脚本跟踪与分析
第6章:浏览器缓存
6.1、别忘了浏览器
6.2、缓存协商
6.3、彻底消灭请求
第7章:Web服务器缓存
7.1、URL映射
7.2、缓存响应内容
7.3、缓存文件描述符
第8章:反向代理缓存
8.1、传统代理
8.2、何为反向
8.3、在反向代理上创建缓存
8.4、小心穿过代理
8.5、流量分配
第9章:Web组件分离
9.1、备受争议的分离
9.2、因材施教
9.3、拥有不同的域名
9.4、浏览器并发数
9.5、发挥各自的潜力
第10章:分布式缓存
10.1、数据库的前端缓存区
10.2、使用memcached
10.3、读操作缓存
10.4、写操作缓存
10.5、监控状态
10.6、缓存扩展
第11章:数据库性能优化
11.1、友好的状态报告
11.2、正确使用索引
11.3、锁定与等待
11.4、事务性表的性能
11.5、使用查询缓存
11.6、临时表
11.7、线程池
11.8、反范式化设计
11.9、放弃关系型数据库
第12章:Web负载均衡
12.1、一些思考
12.2、HTTP重定向
12.3、DNS负载均衡
12.4、反向代理负载均衡
12.5、IP负载均衡
12.6、直接路由
12.7、IP隧道
12.8、考虑可用性
第13章:共享文件系统
13.1、网络共享
13.2、NFS
13.3、局限性
第14章:内容分发和同步
14.1、复制
14.2、SSH
14.3、WebDAV
14.4、rsync
14.5、Hash
tree
14.6、分发还是同步
14.7、反向代理
第15章:分布式文件系统
15.1、文件系统
15.2、存储节点和追踪器
15.3、MogileFS
第16章:数据库扩展
16.1、复制和分离
16.2、垂直分区
16.3、水平分区
第17章:分布式计算
17.1、异步计算
17.2、并行计算
第18章:性能监控
18.1、实时监控
18.2、监控代理
18.3、系统监控
18.4、服务监控
18.5、响应时间监控
参考文献

热门书摘

减少不必要的系统调用,也是Web服务器性能优化的一个方面

非阻塞I/O一般只针对网络I/O有效,我们只要在socket的选项设置中使用O_NONBLOCK即可,这样对于该socket的send()或recv()便采用非阻塞方式。值得注意的是,对于磁盘I/O,非阻塞I/O并不产生效果。

阻塞和非阻塞是指当进程访问的数据如果尚未就绪,进程是否需要等待,简单说这相当于函数内部的实现区别,即未就绪时是直接返回还是等待就绪;而同步和异步是指访问数据的机制,同步一般指主动请求并等待I/O操作完毕的方式,当数据就绪后在读写的时候必须阻塞,异步则指主动请求数据后便可以继续处理其他任务,随后等待I/O操作完毕的通知,这可以使进程在数据读写时也不发生阻塞。

响应时间=发送时间+传播时间+处理时间

Linux内核提供一种访问磁盘文件的特殊方式,它可以将内存中某块地址空间和我们要指定的磁盘文件相关联,从而把我们对这块内存的访问转换为对磁盘文件的访问,这种技术称为内存映射(Memory Mapping)。

数据库持久连接

响应时间=(数据量比特数/带宽) +(传播距离/传播速度)+处理时间

但正是由于需要进程执行多次的轮询来查看数据是否就绪,这花费了大量的CPU时间,使得进程处于忙碌等待状态。

下载速度 =数据量字节数/响应时间

多路I/O就绪通知的出现,提供了对大量文件描述符就绪检查的高性能方案,它允许进程通过一种方法来同时监视所有文件描述符,并可以快速获得所有就绪的文件描述符,然后只针对这些文件描述符进行数据访问。

一个进程处理多个连接,非阻塞I/O

两种过期检查方法

索引绝对是一个重量级的因素,一旦索引使用不当,毫不夸张地说,其他任何优化措施将毫无意义。

http://smartdeveloper.cn

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

响应时间

I/O操作根据设备的不同分为很多种类型,比如内存I/O、网络I/O、磁盘I/O。

同步阻塞I/O是指当进程调用某些涉及I/O操作的系统调用或库函数时,比如accept()、send()、recv()等,进程便暂停下来,等待I/O操作完成后再继续运行

11.2 正确使用索引

相关推荐

微信二维码