[LAMP平臺]
LAMP這個詞的由來最早始於德國雜志“ct Magazine”,Michael Kunze在1990年最先把這些項目組合在一起創造瞭LAMP的縮寫字。這些組件雖然並不是開開始就設計為一起使用的,但是,這些開源軟件都可以很方便的隨時獲得並免費獲得。這就導致瞭這些組件經常在一起使用。在過去的幾年裡,這些組件的兼容性不斷完善,在一起的應用情形變得非常普便。為瞭改善不同組件之間的協作,已經創建瞭某些擴展功能。目前,幾乎在所有的Linux發佈版中都默認包含瞭“LAMP stack”的產品。這些產品組成瞭一個強大的Web應用程序平臺
LAMP 平臺由四個組件組成,呈分層結構。每一層都提供瞭整個軟件棧的一個關鍵部分:
Linux:Linux 處在最低層,提供操作系統。其他每個組件實際上也在 Linux 上運行。但是,並不一定局限於 Linux,如有必要,其他組件也可以在 Microsoft® Windows®、Mac OS X 或 UNIX® 上運行。
Apache:次低層是 Apache,它是一個 Web 服務器。Apache 提供可讓用戶獲得 Web 頁面的機制。Apache 是一款穩定的、支持關鍵任務的服務器,Internet 上超過 65% 的網站都使用它作為 Web 服務器。PHP 組件實際上是在 Apache 中,動態頁面可以通過 Apache 和 PHP 創建。
MySQL:MySQL 提供 LAMP 系統的數據存儲端。有瞭 MySQL,便可以獲得一個非常強大的、適合運行大型復雜站點的數據庫。在 Web 應用程序中,所有數據、產品、帳戶和其他類型的信息都存放在這個數據庫中,通過 SQL 語言可以很容易地查詢這些信息。
PHP:PHP 是一門簡單而有效的編程語言,它像是粘合劑,可以將 LAMP 系統所有其他的組件粘合在一起。您可以使用 PHP 編寫能訪問 MySQL 數據庫中的數據和 Linux 提供的一些特性的動態內容。
[檢測工具]
為瞭得到完整的調試結果,建議你采用 ApacheBench 或者 httperf之類的軟件。如果你對非 LAMP 架構的服務器測試有興趣的話,建議你采用微軟的免費軟件: Web Application Stress Tool(需要 NT 或者 2000)。 (其它服務器測試工具)
檢測 Apache ,采用 top d 1 顯示所有進程的 CPU 和內存情況。另外,還采用 apachectl status 命令
[硬件優化]
1、升級硬件的一般規則:對於 PHP 腳本而言,主要的瓶頸是 CPU ,對於靜態頁面而言,瓶頸是內存和網絡。一臺 400 Mhz 的普通奔騰機器所下載的靜態頁面就能讓 T3 專線(45Mbps)飽和。
2、采用 hdparm 來優化磁盤,一般能提升 IDE 磁盤讀寫性能 200%,但是對 SCSI 硬盤也有效果。(不同類型的硬盤對比)
[策略優化]
3、Apache 處理 PHP 腳本的速度要比靜態頁面慢 2-10 倍,因此盡量采用多的靜態頁面,少的腳本。
4、PHP 腳本如果不做緩沖,每次調用都需要編譯,因此,安裝一個 PHP 緩沖產品能提升 25-100% 的性能。
5、如果你采用瞭 Linux 系統,建議升級內核到 2.4,因為靜態頁面由內核服務。
6、另外一項緩沖技術是把不常修改的 PHP 頁面采用 HTML 緩沖輸出。
7、不要在 Web 服務器上運行 X-Windows ,關掉沒有必要運行的進程。
8、如果能夠用文本就不要用圖像,盡量減小圖片的尺寸。
9、分散負載,把數據庫服務器放到另外的機器上去。采用另外低端的機器服務圖片和 HTML 頁面,如果所有的靜態頁面在另外一臺服務器上處理,可以設置 httpd.conf 中的 KeepAlives 為 off ,來減少斷開連接的時間。
10、以上所有的方法都是針對單機而言的,如果你覺得系統還是不夠快,可以采用集群,負載均衡,緩沖技術。采用 Squid 作為緩沖,配置 Squid 的方法。
[編譯優化]
11、把基於文件的會話切換到基於共享內存的會話。編譯 PHP 時采用 –with-mm 選項,在 php.ini 中設置 set session.save_handler=mm 。這個簡單的修改能讓會話管理時間縮短一半。
12、采用最新版本的 Apache ,並把 PHP 編譯其中,或者采用 DSO 模式,不要采用 CGI 方式。
13、編譯 PHP 時,建議采用如下的參數:
–enable-inline-optimization –disable-debug
[配置優化]
14、修改 httpd.conf :
# 關閉 DNS lookups,PHP 腳本隻拿 IP 地址
HostnameLookups off
15、如果網絡擁擠,CPU 資源不夠用,采用 PHP 的 HTML 壓縮功能:
output_handler = ob_gzhandler
PHP 4.0.4 的用戶請不要使用,因為存在內存泄漏問題。
16、修改 httpd.conf 中的 SendBufferSize 為你最大的頁面文件的大小。加大內核的 TCP/IP 寫緩沖大小。
17、采用數據庫的持久連接時,不要把 MaxRequestsPerChild 設置得太大。
[第三方軟件優化]
18、如果喜歡從修改 Apache 源碼入手,可以安裝 lingerd。在頁面產生和發送後,每個 Apache 進程都會浪費一段時光在客戶連接上,Lingerd 能接管這項工作,讓 Apache 迅速服務下一個客戶請求。
19、如果你足夠勇敢的話,還可以采用 Silicon Graphics 的 Accelerated Apache 補丁。這個工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。
安裝一個 PHP 緩沖產品能提升 25-100% 的性能。
[Linux系統優化]
1.清理服務器磁盤碎片:
不論Linux文件系統采用什麼文件格式(ext3、JFS、XFS、ReiserFS )、何種類型的硬盤(IDE 、SCSI),隨著時間的推移文件系統都會趨向於碎片化。ext3、JFS等高級文件系統可以減少文件系統的碎片化,但是並沒有消除。在繁忙的數據庫服務器中,隨著時間的過去,文件碎片化將降低硬盤性能,硬盤性能從硬盤讀出或寫入數據時才能註意到。時間長瞭會發現每個磁盤上確實積累瞭非常多的垃圾文件,釋放磁盤空間可以幫助系統更好地工作。Linux最好的整理磁盤碎片的方法是做一個完全的備份,重新格式化分區,然後從備份恢復文件。但是對於7×24小時工作關鍵任務服務器來說是比較困難的。Kleandisk是一個高效的磁盤清理工具,它能把磁盤上的文件分成不同的"組",比如把所有的"core"文件歸成一組(Group),這樣要刪除所有core文件時隻要刪除這個組就行瞭。core文件是當軟件運行出錯時產生的文件,它對於軟件開發人員比較有用,對於其他用戶(比如電子郵件服務器)卻沒有任何意義。因此,如果沒有軟件開發的需要,見到core文件就可以將其刪除。