深入分析 LAMP 架構(gòu)
圖-LAMP
LAMP 架構(gòu)具體內(nèi)容如下:
LAMP就是Linux Apache MySql Php的縮寫,是目前非常強(qiáng)大的架站組合。
如今,使用 LAMP(Linux®、Apache、MySQL 和 PHP/Perl)架構(gòu)的應(yīng)用程序不斷被開發(fā)和部署。但是,服務(wù)器管理員對應(yīng)用程序本身幾乎沒有控制能力,因?yàn)閼?yīng)用程序是別人編寫的。這份共三部分的系列文章將討論許多服務(wù)器配置問題,這些配置會影響應(yīng)用程序的性能。第一篇文章討論 LAMP 架構(gòu)、一些性能度量技術(shù)以及一些基本的 Linux 內(nèi)核、硬盤和文件系統(tǒng)調(diào)節(jié)。后續(xù)的文章將研究 Apache、MySQL 和 PHP 組件的調(diào)優(yōu)。
Linux、 Apache、MySQL 和 PHP(或 Perl)是許多 Web 應(yīng)用程序的基礎(chǔ) —— 從 to-do 列表到 blog,再到電子商務(wù)站點(diǎn)。WordPress 和 Pligg 是兩個(gè)支持大容量 Web 站點(diǎn)的常用軟件包。這種架構(gòu)簡稱為 LAMP。幾乎每個(gè) Linux 發(fā)布版都包含 Apache、MySQL、PHP 和 Perl,所以安裝 LAMP 軟件是非常容易的。
安裝的簡便性使人誤以為這些軟件會自行順利地運(yùn)行,但是實(shí)際情況并非如此。最終,應(yīng)用程序的負(fù)載會超出后端服務(wù)器自帶設(shè)置的處理能力,應(yīng)用程序的性能會降低。LAMP 安裝需要不斷監(jiān)控、調(diào)優(yōu)和評估。
系統(tǒng)調(diào)優(yōu)對于不同的人有不同的含義。本系列主要關(guān)注 LAMP 組件(Linux、Apache、MySQL 和 PHP)的調(diào)優(yōu)。對應(yīng)用程序本身進(jìn)行調(diào)優(yōu)是另一個(gè)復(fù)雜的問題。應(yīng)用程序和后端服務(wù)器之間存在一種共生關(guān)系:未能適當(dāng)調(diào)優(yōu)的服務(wù)器甚至?xí)棺詈玫膽?yīng)用程序在負(fù)載之下崩潰,而借助充分的調(diào)優(yōu),完全可以避免編寫得很糟糕的應(yīng)用程序使服務(wù)器緩慢如牛。幸運(yùn)的是,正確的系統(tǒng)調(diào)優(yōu)和監(jiān)視可以指出應(yīng)用程序中的問題。
#p#
LAMP 架構(gòu)
對任何系統(tǒng)進(jìn)行調(diào)優(yōu)的第一步都是了解它的工作原理。按照最簡單的形式,基于 LAMP 的應(yīng)用程序是用 PHP 這樣的腳本語言編寫的,它們作為 Linux 主機(jī)上運(yùn)行的 Apache Web 服務(wù)器的一部分運(yùn)行。
PHP 應(yīng)用程序通過請求的 URL、所有表單數(shù)據(jù)和已捕獲的任意會話信息從客戶機(jī)獲得信息,從而確定應(yīng)該執(zhí)行什么操作。如有必要,服務(wù)器會從 MySQL 數(shù)據(jù)庫(也在 Linux 上運(yùn)行)獲得信息,將這些信息與一些 Hypertext Markup Language(HTML)模板組合在一起,并將結(jié)果返回給客戶機(jī)。當(dāng)用戶在應(yīng)用程序中導(dǎo)航時(shí),這個(gè)過程重復(fù)進(jìn)行;當(dāng)多個(gè)用戶訪問系統(tǒng)時(shí),這個(gè)過程會并發(fā)進(jìn)行。但是,數(shù)據(jù)流不是單向的,因?yàn)榭梢杂脕碜杂脩舻男畔⒏聰?shù)據(jù)庫,包括會話數(shù)據(jù)、統(tǒng)計(jì)數(shù)據(jù)(包括投票)和用戶提交的內(nèi)容(比如評論或站點(diǎn)更新)。除了動(dòng)態(tài)元素之外,還有靜態(tài)元素,比如圖像、JavaScript 代碼和層疊樣式表(CSS)。
#p#
LAMP 的變體
LAMP 最初是指 Linux、Apache、MySQL 和 PHP(或 Perl)。但是,如果管理員不擅長 Linux,那么可以在 Microsoft® Windows® 上運(yùn)行 Apache、MySQL 和 PHP,這并非一種少見的情況。同樣,也可以將 Apache 換成別的系統(tǒng),比如 lighttpd,產(chǎn)生的仍然是 LAMP 風(fēng)格的系統(tǒng),但是首字母縮寫不再是 LAMP 了。也可以改用另一種開放源碼數(shù)據(jù)庫(比如 PostgreSQL 或 SQLite)、商業(yè)數(shù)據(jù)庫(比如 IBM® DB2®)或者免費(fèi)的商業(yè)引擎(比如 IBM DB2 Express-C)。
本文主要關(guān)注傳統(tǒng)的 LAMP 架構(gòu),因?yàn)檫@種架構(gòu)是最常見的,而且它的組件都是開放源碼的。
在研究 LAMP 系統(tǒng)中的請求流之后,就來看看可能出現(xiàn)性能瓶頸的地方。數(shù)據(jù)庫提供許多動(dòng)態(tài)信息,所以數(shù)據(jù)庫對查詢的響應(yīng)延遲都會反映在客戶機(jī)中。Web 服務(wù)器必須能夠快速地執(zhí)行腳本,還要能夠處理多個(gè)并發(fā)請求。最后,底層操作系統(tǒng)必須處于良好的狀態(tài)才能支持應(yīng)用程序。通過網(wǎng)絡(luò)在不同服務(wù)器之間共享文件的其他設(shè)置也可能成為瓶頸。
通過文章的主觀分析,我們就LAMP得出結(jié)論:LAMP架構(gòu)有Apache、MySQL 和 PHP等。
【編輯推薦】

























