《构建高性能Web站点》学习笔记
《构建高性能Web站点》 作者郭欣,电子工业出版社,2009.8 ? 学习笔记 书评推荐 去年10月份时听同事推荐买的这本书,由于当时实践经验不是特别丰富,草草读过后感触并不是特别深。最近做了一个社交网站类型的项目,语言PHP,也用到了流行的Memcached key-val
《构建高性能Web站点》 作者郭欣,电子工业出版社,2009.8 ? 学习笔记 书评推荐
去年10月份时听同事推荐买的这本书,由于当时实践经验不是特别丰富,草草读过后感触并不是特别深。最近做了一个社交网站类型的项目,语言PHP,也用到了流行的Memcached key-value缓存、eAccelerator缓存加速、LVS负载均衡、rsync集群中的文件同步、MySQL的主从复制/读写分离/水平分区、性能监控、反向代理。在架构师的指导下,综合运用上述技术完成了编码开发,也算是小有心得。回过头了重新翻看这本书,感悟又比上次要深刻了许多,有一种英雄所见略同的快感。
这本书的名字起的很”大”,但其实内容一点都不浮躁,作者有着技术人那种“质疑一切,眼见为实”的作派,用一个一个真实的实验,像讲故事一样娓娓道来,逻辑清晰、原理点透,关键技术点不回避,一看就是出自大师之手。
每一个章节讲述一个独立的话题,不过最好还是不要跳着看,顺着作者的思路读下来效果会更好。第2、3章讲述基础理论知识,第4~8、10章介绍Web应用中常见的6种缓存,第9、12章介绍组件分离和负载均衡,第11、16章讲述数据库优化,第13-15章介绍集群中的文件分发/同步,最后17、18章分别介绍了一下分布式计算和性能监控。
第3章是一堂生动的操作系统课,以“服务器并发处理能力”为话题,以apache bench为工具,一步一步展开。其中比较精彩的部分是,对几种多路I/O就绪通知方式的比较,select、poll、epoll有什么异同,分别适合哪种Web应用场景。
第4章介绍静态缓存,测试了无缓存、使用Smarty cache、使用XCache的效果对比;第5章介绍了字节码缓存,使用APC、eAccelerator、XCache opcode来预编译php为字节码,避免脚本每次都要解释执行的开销;第6章介绍了浏览器缓存,对于开发编码阶段来说,浏览器缓存是让人深恶痛绝的,但对于性能优化阶段来说,这又是很重要的一环,本章详细介绍了Last-Modified机制、Expires机制;第7章介绍了服务器缓存,使用apache的mod_disk_cache模块来实现;第8章介绍了反向代理缓存,Varnish是Facebook也在用的http反向代理加速器,实验证明确实效果明显;第10章介绍了Memcached缓存,之前5章说的都是代码都完成后的优化手段,都是out of box开箱即用的组件,而Memcached只是一个key-value数据库,必须在代码中用才能起到优化的效果,这里介绍了Memcached存在的意义和使用的思路。
(顺便说下,我在这个项目中就用到了eAccelerator来优化性能,测试组在做压力测试的时候发现CPU使用率特别高,安装了eAccelerator组件后,CPU使用率从80%左右降到了20%,吞吐率上升了接近3倍!PHP是一个解释型语言,每次执行都要重复进行语法分析、词法分析、执行,而采用了类似的opcode缓存组件后,就可以避免重复多余的分析步骤,直接以机器码来执行,CPU使用率自然就降下来了。)
第12章介绍负载均衡,从最简单的HTTP重定向说起、DNS负载均衡、反向代理负载均衡,以及LVS的三种配置方式。之前做项目就用到了LVS,当时按照网上的教程配置完,对一些原理还不是摸的特别透,比如说在LVS-DR直接路由模式下,需要配置eth0:0 IP别名,设置arp_ignore,网上没有任何教程把这点理论基础说清楚,计算机网络学的不扎实真还就不好理解这些,而本书中就把这些知识点都点透,说的特别到位。
数据库优化是个大话题,第11章讲述了基本的优化策略与思路,包括分析报告、执行计划、索引、锁;第16章介绍了通过扩展数据库来实现优化,总体思路是使用主从模式来实现读写分离,主数据库用来进行写操作,若干个从数据库用来进行查询操作,使用数据库内置的复制机制来实现从主数据库到从数据库的同步。
顺便说下,国内有个开源项目Amoeba,是阿里巴巴的一个大牛开发的Java项目,是一个介于应用程序与数据库之间的中间件,用来实现垂直/水平分库和读写分离。
集群中的服务器,为了保证各个节点拥有一样的程序代码和文件,必须要有一个文件共享机制。第13章就介绍了共享文件系统NFS,类似于网吧的无盘系统,多台服务器共用一个存储服务器。第14章介绍了内容分发/同步,包括scp、WebDAV、rsync,说白了就是把文件在多台服务器上传来传去。目前我在做的这个项目就大量使用了rsync用来在多台服务器间同步代码和图片,使用crontab定时任务来循环执行脚本。第16章介绍了分布式文件系统MogileFS、Hadoop,这个目前还没有用到,研究不深,暂且略过。
第18章介绍性能监控,使用Nmon来监控服务器状态,而Cacti是一个监控中心。我之前的项目使用的是Hyperic HQ监控工具,也有比较完善的监控功能、报表功能。
总的来说,这本书并不是一本操作手册,讲每一个知识点/工具时,都是这样一个思路:遇到了什么问题=>适合使用什么工具=>使用工具后效果如何=>为什么会产生这样的效果=>哪些场景适合使用哪些不适合。这本书正是这样一个互联网应用优化的路线图,从方方面面介绍了策略,而具体的工具安装、操作,网上教程很多,原理搞懂了,操作仅仅是最简单的工作而已。
原文地址:《构建高性能Web站点》学习笔记, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

小红书笔记怎么删除?在小红书APP中是可以编辑笔记的,多数的用户不知道小红书笔记如何的删除,接下来就是小编为用户带来的小红书笔记删除方法图文教程,感兴趣的用户快来一起看看吧!小红书使用教程小红书笔记怎么删除1、首先打开小红书APP进入到主页面,选择右下角【我】进入到专区;2、之后在我的专区,点击下图所示的笔记页面,选择要删除的笔记;3、进入到笔记页面,右上角【三个点】;4、最后下方会展开功能栏,点击【删除】即可完成。

作为一名小红书的用户,我们都曾遇到过发布过的笔记突然不见了的情况,这无疑让人感到困惑和担忧。在这种情况下,我们该怎么办呢?本文将围绕“小红书发布过的笔记不见了怎么办”这一主题,为你详细解答。一、小红书发布过的笔记不见了怎么办?首先,不要惊慌。如果你发现笔记不见了,保持冷静是关键,不要慌张。这可能是由于平台系统故障或操作失误引起的。检查发布记录很简单。只需打开小红书App,点击“我”→“发布”→“所有发布”,就可以查看自己的发布记录。在这里,你可以轻松找到之前发布的笔记。3.重新发布。如果找到了之

小红书怎么在笔记中添加商品链接?在小红书这款app中用户不仅可以浏览各种内容还可以进行购物,所以这款app中关于购物推荐、好物分享的内容是非常多的,如果小伙伴在这款app也是一个达人的话,也可以分享一些购物经验,找到商家进行合作,在笔记中添加连接之类的,很多人都愿意使用这款app购物,因为不仅方便,而且有很多达人会进行一些推荐,可以一边浏览有趣内容,一边看看有没有适合自己的衣服商品。一起看看如何在笔记中添加商品链接吧!小红书笔记添加商品链接方法 在手机桌面上打开app。 在app首页点击

不再需要pip?快来学习如何有效卸载pip!引言:pip是Python的包管理工具之一,它可以方便地安装、升级和卸载Python包。然而,有时候我们可能需要卸载pip,可能是因为我们希望使用其他的包管理工具,或者因为我们需要完全清除Python环境。本文将介绍如何有效地卸载pip,并提供具体的代码示例。一、卸载pip的方法下面将介绍两种常见的卸载pip的方法

深入学习matplotlib颜色表,需要具体代码示例一、引言matplotlib是一个功能强大的Python绘图库,它提供了丰富的绘图函数和工具,可以用于创建各种类型的图表。而颜色表(colormap)是matplotlib中一个重要的概念,它决定了图表的配色方案。深入学习matplotlib颜色表,将帮助我们更好地掌握matplotlib的绘图功能,使绘

学习C语言的魅力:解锁程序员的潜力随着科技的不断发展,计算机编程已经成为了一个备受关注的领域。在众多编程语言中,C语言一直以来都备受程序员的喜爱。它的简单、高效以及广泛应用的特点,使得学习C语言成为了许多人进入编程领域的第一步。本文将讨论学习C语言的魅力,以及如何通过学习C语言来解锁程序员的潜力。首先,学习C语言的魅力在于其简洁性。相比其他编程语言而言,C语

从零开始学习Pygame:完整的安装和配置教程,需要具体代码示例引言:Pygame是一个使用Python编程语言开发的开源游戏开发库,它提供了丰富的功能和工具,使得开发者可以轻松创建各种类型的游戏。本文将带您从零开始学习Pygame,并提供完整的安装和配置教程,以及具体的代码示例,让您快速入门。第一部分:安装Python和Pygame首先,确保您的计算机上已

在word中编辑文字内容时,有时会需要输入公式符号。有的小伙们不知道在word根号输入的方法,小面就让小编跟小伙伴们一起分享下word根号输入的方法教程。希望对小伙伴们有所帮助。首先,打开电脑上的Word软件,然后打开要编辑的文件,并将光标移动到需要插入根号的位置,参考下方的图片示例。2.选择【插入】,再选择符号里的【公式】。如下方的图片红色圈中部分内容所示:3.接着选择下方的【插入新公式】。如下方的图片红色圈中部分内容所示:4.选择【根式】,再选择合适的根号。如下方的图片红色圈中部分内容所示:
