參與測試的加速器:Xcache,Opcache,hhvm
Xcache簡介
前面已經介紹了PHP加速器的原理和功用(參見LAMP-PHP-fpm伺服器配置),xcache作為目前使用廣泛的PHP加速器之一,其性能比早期的eAccelerator加速器要優良,故本次就對比一下PHP程式在執行時加速器xcache對其的性能影響。
安裝xcache
# 安裝
tar xf xcache-3.0.3.tar.gz
cd xcache-3.0.3
/usr/local/php/bin/phpize # xcache是作為php的外接子產品安裝的
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install
# 安裝結束時,會出現類似如下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
# 編輯php.ini,整合php和xcache:
# 首先将xcache提供的樣例配置導入php.ini
mkdir /etc/php.d # 這是前面安裝PHP時配置的配置檔案掃描目錄
cp xcache.ini /etc/php.d # xcache.ini檔案在xcache的源碼目錄中。
# 接下來編輯/etc/php.d/xcache.ini,找到extension開頭的行,修改為如下行:
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
# 如果php.ini檔案中有多條extension指令行,要確定此新增的行排在第一位。
# 檢視xcache是否已安裝成功:
/usr/local/php/bin/php -m |grep -i xcache
Opcache簡介
新一代PHP加速器,由Zend公司研發,其實作原理與Xcache類似,都是把PHP執行後的資料緩沖到記憶體中進而避免重複的編譯過程,能夠直接使用緩沖區已編譯的代碼進而提高速度,降低伺服器負載,但性能卻比Xcache更加優越,詳見測試結果
安裝Opcache
wget http://pecl.php.net/get/zendopcache-7.0.2.tgz
tar xzf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
# 配置檔案設定,可直接在php.ini的最後添加如下内容,但在此在PHP配置檔案的掃描目錄php.d下配置新檔案opcache.ini,易于管理,php-config-scan-dir是在編譯安裝PHP時定義的
# vi /etc/php.d/opcache.ini
[opcache]
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/opcache.so
opcache.memory_consumption=128 # 配置設定的記憶體大小,機關MB,即能夠存儲多少預編譯的PHP代碼
opcache.interned_strings_buffer=8 # interned字元串占記憶體大小,機關MB
opcache.max_accelerated_files=4000 # 允許緩存的檔案最大數量
opcache.revalidate_freq=60 # 多長時間檢查檔案時間戳,以改變共享記憶體配置設定,機關為s
opcache.fast_shutdown=1 # 是否開啟快速關閉隊列功能,1為開啟
opcache.enable_cli=1 # 允許緩存CLI下的PHP程式
#檢查子產品安裝成功:/usr/local/php/bin/php -m |grep -i opcache
hhvm簡介
HipHop VM(HHVM)是Facebook推出的用來執行PHP代碼的虛拟機,它是一個PHP的JIT(Just-In- Time)編譯器,同時具有産生快速代碼和即時編譯的優點;
hhvm将PHP代碼編譯轉換成C++程式來執行,執行效率得到顯著提升;
根據 Facebook透漏,HHVM在速度方面獲得了顯著改進,比目前使用的PHP解釋器快60%,而使用記憶體減少90%
安裝hhvm
因為目前hhvm還處以研發階段,國内用于生産環境的還很少,安裝所需的環境比較複雜(如CentOS6.5下的boost-system和boost-filesystem的版本就過低),故本人還在調試測試階段,等出了測試結果,再将hhvm的測試結果一并貼出。
測試步驟
# 另找一台虛拟機,對HTTPD伺服器(192.168.1.110)進行壓力測試
# 測試工具使用Apache自帶的基準測試工具ab即可
# 測試方法如下:
ab -c 20 -n 2000 http://192.168.1.110:8080/index.php
# 注:測試采用20并發,在不影響通路的情況下,檢視xcache加速器的加速效果;測試頁面使用上一講剛部署的phpMyAdmin的登入頁面index.php即可
# 注:為了更好的測試出PHP加速器的緩存特性,可連續多測試幾次,得到穩定值
測試結果對比

從上圖可以看出,PHP加速器對PHP程式的執行過程加速明顯;綜合每秒的請求數和PHP伺服器的負載來看:
xcache使得PHP程式的執行效率提升了3-4倍;
Opcache使得PHP程式的執行效率提升了6-7倍;
據說hhvm對PHP程式的加速效果更加強悍,敬請期待!