《构建高性能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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











小紅書メモを削除するにはどうすればよいですか? メモは小紅書アプリで編集できます。ほとんどのユーザーは小紅書メモの削除方法を知りません。次に、エディターがユーザーに小紅書メモの削除方法に関する写真とテキストを提供します。チュートリアル、興味のあるユーザーが来て、それを受講してください見てください!小紅書使い方チュートリアル 小紅書メモの削除方法 1. まず小紅書アプリを開いてメインページに入り、右下隅の[自分]を選択して特別エリアに入ります; 2. 次に、マイエリアで、表示されているメモページをクリックします下の図で、削除したいメモを選択します; 3. メモページに入り、右上隅の [3 つの点] をクリックします; 4. 最後に、下部に機能バーが展開され、[削除] をクリックして完了します。

小紅書のユーザーとして、私たちは皆、公開されたノートが突然消えてしまう状況に遭遇したことがありますが、間違いなく混乱し、心配しています。この場合、どうすればよいでしょうか?この記事では、「小紅書が公開したメモが見つからない場合の対処方法」というテーマに焦点を当て、詳細な回答を提供します。 1. 小紅書が発行したメモが紛失した場合はどうすればよいですか?まず、パニックにならないでください。メモがなくなっていることに気づいた場合は、パニックに陥らず、落ち着いて行動することが重要です。これは、プラットフォームのシステム障害または操作エラーが原因である可能性があります。リリース記録の確認も簡単です。小紅書アプリを開き、「自分」→「公開」→「すべての出版物」をクリックするだけで、自分の出版記録を表示できます。ここでは、以前に公開されたノートを簡単に見つけることができます。 3.再投稿。見つかったら

もうpipは必要ありませんか? pip を効果的にアンインストールする方法を学びましょう!はじめに: pip は Python のパッケージ管理ツールの 1 つで、Python パッケージを簡単にインストール、アップグレード、アンインストールできます。ただし、別のパッケージ管理ツールを使用したい場合や、Python 環境を完全にクリアする必要がある場合など、pip をアンインストールする必要がある場合があります。この記事では、pip を効率的にアンインストールする方法を説明し、具体的なコード例を示します。 1. pip をアンインストールする方法 以下では、pip をアンインストールする 2 つの一般的な方法を紹介します。

小紅書でメモに商品リンクを追加するにはどうすればよいですか?小紅書アプリでは、ユーザーはさまざまなコンテンツを閲覧できるだけでなく、ショッピングもできるため、このアプリにはショッピングのおすすめや良い商品の共有に関するコンテンツがたくさんあります。このアプリでは、ショッピング体験を共有したり、協力してくれる販売者を見つけたり、メモにリンクを追加したりすることもできます。便利なだけでなく、専門家がいくつかの機能を備えているため、多くの人がこのアプリをショッピングに使用したいと考えています。興味深いコンテンツを閲覧して、自分に合った衣料品があるかどうかを確認できます。ノートに商品リンクを追加する方法を見てみましょう! 小紅書ノートに商品リンクを追加する方法 携帯電話のデスクトップでアプリを開きます。アプリのホームページをクリックします

matplotlib カラー テーブルの詳細については、特定のコード サンプルが必要です 1. はじめに matplotlib は強力な Python 描画ライブラリであり、さまざまな種類のチャートの作成に使用できる豊富な描画関数とツールのセットを提供します。カラーマップ (カラーマップ) は matplotlib の重要な概念であり、チャートの配色を決定します。 matplotlib カラー テーブルを詳しく学ぶことは、matplotlib の描画機能をよりよく習得し、描画をより便利にするのに役立ちます。

C言語学習の魅力:プログラマーの可能性を引き出す テクノロジーの発展に伴い、コンピュータプログラミングは大きな注目を集めている分野です。数あるプログラミング言語の中でもC言語は常にプログラマーに愛されています。そのシンプルさ、効率性、幅広い用途により、C 言語の学習は、多くの人にとってプログラミングの分野に入る最初のステップとなっています。この記事では、C言語を学ぶ魅力と、C言語を学ぶことでプログラマーの可能性を引き出す方法について解説します。 C言語学習の魅力は、まずその簡単さにあります。他のプログラミング言語と比較すると、C言語は

Pygame をゼロから学ぶ: 完全なインストールと構成チュートリアル、特定のコード例が必要 はじめに: Pygame は、Python プログラミング言語を使用して開発されたオープン ソースのゲーム開発ライブラリであり、豊富な機能とツールを提供し、開発者はさまざまなタイプのゲームを簡単に作成できますゲームの。この記事は、Pygame をゼロから学習するのに役立ち、完全なインストールと構成のチュートリアルと、すぐに始めるための具体的なコード例を提供します。パート1:最初にPythonとPygameをインストールして、確認してください

Word でテキスト コンテンツを編集するときに、数式記号の入力が必要になる場合があります。 Word でルート番号を入力する方法を知らない人もいるので、Xiaomian は私に、Word でルート番号を入力する方法のチュートリアルを友達と共有するように頼みました。それが私の友達に役立つことを願っています。まず、コンピュータで Word ソフトウェアを開き、編集するファイルを開き、ルート記号を挿入する必要がある場所にカーソルを移動します。下の図の例を参照してください。 2. [挿入]を選択し、記号内の[数式]を選択します。下の図の赤丸で示すように: 3. 次に、下の[新しい数式を挿入]を選択します。以下の図の赤丸で示すように: 4. [根号式]を選択し、適切な根号を選択します。下の図の赤丸で示したように、
