《构建高性能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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

小紅書筆記怎麼刪除?在小紅書APP中是可以編輯筆記的,多數的用戶不知道小紅書筆記如何的刪除,接下來就是小編為用戶帶來的小紅書筆記刪除方法圖文教程,有興趣的用戶快來一起看看吧!小紅書使用教學小紅書筆記怎麼刪除1、先打開小紅書APP進入到主頁面,選擇右下角【我】進入到專區;2、之後在我的專區,點擊下圖所示的筆記頁面,選擇要刪除的筆記;3、進入到筆記頁面,右上角【三個點】;4、最後下方會展開功能欄,點選【刪除】即可完成。

不再需要pip?快來學習如何有效卸載pip!引言:pip是Python的套件管理工具之一,它可以方便地安裝、升級和卸載Python套件。然而,有時候我們可能需要卸載pip,可能是因為我們希望使用其他的套件管理工具,或者因為我們需要完全清除Python環境。本文將介紹如何有效地卸載pip,並提供具體的程式碼範例。一、卸載pip的方法下面將介紹兩種常見的卸載pip的方法

作為一名小紅書的用戶,我們都曾經遇到過發布過的筆記突然不見了的情況,這無疑讓人感到困惑和擔憂。在這種情況下,我們該怎麼辦呢?本文將圍繞著「小紅書發布過的筆記不見了怎麼辦」這個主題,為你詳細解答。一、小紅書發布過的筆記不見了怎麼辦?首先,不要驚慌。如果你發現筆記不見了,保持冷靜是關鍵,不要慌張。這可能是由於平台系統故障或操作失誤引起的。檢查發布記錄很簡單。只要打開小紅書App,點擊“我”→“發布”→“所有發布”,就可以查看自己的發布記錄。在這裡,你可以輕鬆找到之前發布的筆記。 3.重新發布。如果找到了之

小紅書怎麼在筆記中添加商品連結?在小紅書這款app中用戶不僅可以瀏覽各種內容還可以進行購物,所以這款app中關於購物推薦、好物分享的內容是非常多的,如果小夥伴在這款app也是一個達人的話,也可以分享一些購物經驗,找到商家進行合作,在筆記中添加連結之類的,很多人都願意使用這款app購物,因為不僅方便,而且有很多達人會進行一些推薦,可以一邊瀏覽有趣內容,一邊看看有沒有適合自己的衣服商品。一起看看如何在筆記中添加商品連結吧!小紅書筆記添加商品連結方法 在手機桌面上開啟app。 在app首頁點擊

深入學習matplotlib顏色表,需要具體程式碼範例一、引言matplotlib是一個功能強大的Python繪圖庫,它提供了豐富的繪圖函數和工具,可以用於創建各種類型的圖表。而顏色表(colormap)是matplotlib中一個重要的概念,它決定了圖表的配色。深入學習matplotlib色表,將幫助我們更好地掌握matplotlib的繪圖功能,使繪

從零開始學習Pygame:完整的安裝和配置教程,需要具體程式碼範例引言:Pygame是一個使用Python程式語言開發的開源遊戲開發庫,它提供了豐富的功能和工具,使得開發者可以輕鬆創建各種類型的遊戲。本文將帶您從零開始學習Pygame,並提供完整的安裝和配置教程,以及具體的程式碼範例,讓您快速入門。第一部分:安裝Python和Pygame首先,確保您的電腦上已

學習C語言的魅力:解鎖程式設計師的潛力隨著科技的不斷發展,電腦程式設計已經成為了一個備受關注的領域。在眾多程式語言中,C語言一直以來都備受程式設計師的喜愛。它的簡單、高效以及廣泛應用的特點,使得學習C語言成為了許多人進入程式設計領域的第一步。本文將討論學習C語言的魅力,以及如何透過學習C語言來解鎖程式設計師的潛力。首先,學習C語言的魅力在於其簡潔性。相較於其他程式語言而言,C語

在word編輯文字內容時,有時會需要輸入公式符號。有的小夥子們不知道在word根號輸入的方法,小面就讓小編跟小夥伴們一起分享下word根號輸入的方法教學。希望對小夥伴們有幫助。首先,開啟電腦上的Word軟體,然後開啟要編輯的文件,並將遊標移到需要插入根號的位置,參考下方的圖片範例。 2.選擇【插入】,再選擇符號裡的【公式】。如下方圖片紅色圈的部分內容所示:3.接著選擇下方的【插入新公式】。如下方圖片紅色圈的部分內容所示:4.選擇【根式】,再選擇適當的根號。如下方圖片紅色圈的部分內容所示:
