目前LAMP (Linux + Apache + MySQL + PHP) 近幾年來發展迅速,已經成為Web 服務器的事實標準。本文我們將介紹基於LAMP組合的伺服器的效能最佳化技巧:加速PHP。
Apache伺服器最佳化、PHP最佳化、Mysql最佳化
1.使用eaccelerator
我們上面的介紹Apache伺服器的最佳化,如果您曾經瀏覽過 PHP 的網頁時,或許會發現:怎麼 PHP 的速度慢慢的,這是怎麼一回事啊?PHP 不是號稱速度上面的反應是很快速的嗎?怎麼會慢慢的呢?這是由於 PHP 的程式碼去調用了太多的函式庫,而這些函式庫每次調用都需要由硬碟讀出來,有沒有辦法提升 PHP 的執行速度啊。如果我們可以將這些在硬碟裡面的函式庫先讀到快取中( Cache ),由於記憶體的速度可比硬碟快多了。如此一來的話,當然可以提升不少速度。
2、軟體下載安裝:
wget http://internap.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.3.tar.bz2
tar jxf eaccelerator-0.9.3.tar.bz2
/usr/local/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config
make;make install
修改/etc/php.ini檔案,加入以下內容:
extension="/PATH/TO/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
然後建立快存取資料目錄:
mkdir /tmp/eAccelerator
chmod 0777 /tmp/eAccelerator
從新啟動Apache伺服器:
/etc/rc.d/init.d/httpd restart
通過lynx瀏覽器開啟Web頁面查看通過phpinfo()已經可以看到圖7,就表示安裝成功。
圖7 eAccelerator啟用
從圖中可以看到:eAccelerator啟用了。下面 使用ab命令:Apache HTTP 伺服器效能測試工具,是一個測試你Apache http伺服器的工具,你可以通過這個工具指定一個單位時間內向apache發出的請求數量來看看你的Apache和機器配合的效能如何。命令如下:
/home/apache/bin/ab -c 20 -n100 –w http://localhost/phpinfo >1.html
-c: 同時向伺服器端發送的請求數目,預設狀態下是一次只執行一個http請求。
-n: 執行一次測試會話的時候所發出的請求數目。
-w:列印輸出結果到HTML表中,預設的表是兩列n行白底黑框 。
ApacheBench)的測試資料的 requests per second (以下簡稱 rps)一項是指每秒伺服器返回的頁面數,經過比較使用了 eAccelerator 後網頁速度明顯加快了。圖8 lynx瀏覽器的 HTML格式測試結果。
圖8 HTML格式測試結果
3.使用Zend Optimizer
Zend Optimizer用最佳化代碼的方法來提高PHP 4.0應用程式的執行速度。實現的原理是對那些在被最終執行之前由運行編譯器(Run-Time Compiler)產生的代碼進行最佳化。一般情況下,執行使用Zend Optimizer的PHP程式比不使用的要快40%到100%。這意味著網站的訪問者可以更快的瀏覽網頁,從而完成更多的事務,創造更好的客戶滿意度。更快的反應同時也意味著可以節省硬體投資,並增強網站所提供的服務。所以,使用Zend Optimizer,就等於提高了電子商務的盈利能力。Zend Optimizer能給PHP使用者帶來很多益處,特別是那些運營網站的人。快速運行PHP程式可以顯著降低伺服器的CPU負載,並可以減少一半的反應時間,也就是從訪問者點選連結到伺服器開始讀取頁面之間的時間。
Zend Optimizer安裝是傻瓜化的,安裝嚮導會自動根據你的選擇來修改php.ini協助你啟動這個引擎。
軟體下載安裝:
wget http://downloads.zend.com/optimizer/3.0.0/ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz
gunzip ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz
tar vxf ZendOptimizer-3.0.0-linux-glibc21-i386.tar
cd ZendOptimizer-3.0.0-linux-glibc21-i386
./install
圖 9 Zend Optimizer安裝嚮導
從新啟動Apache伺服器:
/etc/rc.d/init.d/httpd restart
開啟Web頁面查看通過phpinfo()已經可以看到圖,就表示Zend Optimizer安裝成功。
圖 10 Zend Optimizer安裝成功
然後可以使用ab命令進行再次測試。也可以使用Siege(http://www.joedog.org/siege/ )進行測試,它是一個壓力測試和評測工具,設計用於WEB開發這評估應用在壓力下的承受能力:可以根據配置對一個WEB網站進行多使用者的並發訪問,記錄每個使用者所有請求過程的相應時間,並在一定數量的並發訪問下重複進行。