首页 数据库 mysql教程 《构建高性能Web站点》学习笔记

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

Jun 07, 2016 pm 04:33 PM
作者 学习 笔记

《构建高性能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监控工具,也有比较完善的监控功能、报表功能。

总的来说,这本书并不是一本操作手册,讲每一个知识点/工具时,都是这样一个思路:遇到了什么问题=>适合使用什么工具=>使用工具后效果如何=>为什么会产生这样的效果=>哪些场景适合使用哪些不适合。这本书正是这样一个互联网应用优化的路线图,从方方面面介绍了策略,而具体的工具安装、操作,网上教程很多,原理搞懂了,操作仅仅是最简单的工作而已。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

小红书笔记怎么删除 小红书笔记怎么删除 Mar 21, 2024 pm 08:12 PM

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

小红书发布过的笔记不见了怎么办?它刚发的笔记搜不到的原因是什么? 小红书发布过的笔记不见了怎么办?它刚发的笔记搜不到的原因是什么? Mar 21, 2024 pm 09:30 PM

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

小红书怎么在笔记中添加商品链接 小红书在笔记中添加商品链接教程 小红书怎么在笔记中添加商品链接 小红书在笔记中添加商品链接教程 Mar 12, 2024 am 10:40 AM

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

学会彻底卸载pip,使用Python更加高效 学会彻底卸载pip,使用Python更加高效 Jan 16, 2024 am 09:01 AM

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

深入研究matplotlib的色彩映射表 深入研究matplotlib的色彩映射表 Jan 09, 2024 pm 03:51 PM

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

揭秘C语言的吸引力: 发掘程序员的潜质 揭秘C语言的吸引力: 发掘程序员的潜质 Feb 24, 2024 pm 11:21 PM

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

Pygame入门指南:全面安装和配置教程 Pygame入门指南:全面安装和配置教程 Feb 19, 2024 pm 10:10 PM

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

一起学习word根号输入办法 一起学习word根号输入办法 Mar 19, 2024 pm 08:52 PM

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

See all articles