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