三款免費的PHP加速器:APC、eAccelerator、XCache比較[轉]

 php加速器的文章,怕以後找不到了,自己記下來,順便分享給大家。

一、PHP加速器介紹

        PHP加速器是一個爲了提高PHP執行效率,從而緩存起PHP的操作碼,這樣PHP後面執行就不用解析轉換了,可以直接調用PHP操作碼,這樣速度上就提高了不少。

        Apache中使用mod_php的請求、響應執行流程:

1、Apache接收請求。
2、Apache傳遞請求給mod_php。
3、mod_php定位磁盤文件,並加載到內存中。
4、mod_php編譯源代碼成爲opcode樹。
5、mod_php執行opcode樹。

       PHP加速器相應的就是第四步,它的目的就是防止PHP每次請求都重複編譯PHP代碼,因爲在高訪問量的網站上,大量的編譯往往沒有執行速度快呢?所以這裏面有個瓶頸就是PHP的重複編譯既影響了速度又加載了服務器負載,爲了解決此問題,PHP加速器就這樣誕生了。

二、PHP加速器安裝與配置

        1、安裝配置APC

             APC全稱是Alternative PHP Cache,官方翻譯叫”可選PHP緩存”,它是PHP PECL中的一個擴展,好像是facebook在使用它,下面開始安裝(ubuntu環境): 
$wget http://pecl.php.net/get/APC-3.0.19.tgz
$tar xvzf APC-3.0.19.tgz
$cd APC-3.0.19/APC-3.0.19
$/usr/local/php/bin/phpize
$./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php-config
$make
$sudo make install

下面我們再配置APC,因爲我的PECL擴展路徑改變了,所以我得移動下編譯好的文件:
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/local/php/lib/php/extensions/PECL

然後我們再編輯php.ini文件進行配置,請把下面的代碼加入到php.ini中即可:
extension_dir = "/usr/local/php/lib/php/extensions/PECL"
extension = apc.so
; APC
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = on

     這樣重啓apache就會在phpinfo()信息中顯示。

       2、安裝配置eAccelerator

          eAccelerator的前身其實是truck-mmcache,因爲開發truk-mmcache的人被Zend給招安了,所以開發eAccelerator的人繼承了truk-mmcache的一些特性,設計出eAccelerator加速器。安裝如下:
$wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2
$tar -jxf eaccelerator-0.9.5.tar.bz2
$cd eaccelerator-0.9.5
$/usr/local/php/bin/phpize
$./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
$make
$sudo make install
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/PECL

將下面代碼加入php.ini文件中
extension = eaccelerator.so
; eAccelerator
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.prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"

創建緩存目錄,重啓apache

$sudo mkdir /tmp/eaccelerator
$sudo chmod 777 /tmp/eaccelerator
$sudo /usr/local/apache/apachectl restart

在phpinfo()檢查是否安裝成功.

安裝有點點小錯誤,http://eaccelerator.net/wiki/InstallFromSource參考官方文檔

3、安裝配置XCache

XCache作爲國人自己開發的東西,做小菜鳥的我也感到驕傲,而且XCache無論在速度還是性能上都做的不錯。下面就趕緊讓我們品嚐它吧!

$wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
$tar xvzf xcache-1.2.2.tar.gz
$cd xcache-1.2.2
$/usr/local/php/bin/phpize
$./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/php/php-config
$make
$sudo make install
$sudo mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL

在php.ini添加配置信息:

extension = xcache.so
; xcache
xcache.admin.user = "admin"
xcache.admin.pass = "(執行) echo ’(你的密碼)’|md5sum(得出的密文)"
;
xcache.size = 24M
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8k
xcache.ttl = 0
xcache.gc_interval = 0

xcache.var_size = 8M
xcache.var_count = 1
xcache.var_slots = 8k
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = On
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
;
xcache.coverager = On
xcache.coveragedump_directory = ""

創建緩存目錄,重啓apache

$sudo mkdir /tmp/xcache
$sudo chmod 777 /tmp/xcache
$sudo /usr/local/apache/bin/apachectl restart

去查看phpinfo()信息吧!

三、PHP加速器測試

1、測試環境

硬件: AMD Athlon 64 X2 Dual Core Processor 4400+ @ 2.2GHz CPU, 2GB 內存. 160GB SATA 硬盤

軟件: Linux Ubuntu server Gutsy 7.10, Apache 2.2.4, MySQL 5.0.45 和 PHP 5.2.3

測試指令: ab -c5 -n3000 http://example.com/ (我們使用的是Apache Benchmark (ab) 工具,併發連接爲5,3000次請求)

2、測試結果

無任何加速器:

Document Path: /
Document Length: 21757 bytes
Concurrency Level: 5
Time taken for tests: 288.255212 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred: 65271000 bytes
Requests per second: 10.41 [#/sec] (mean)
Time per request: 480.425 [ms] (mean)
Time per request: 96.085 [ms] (mean, across all concurrent requests)
Transfer rate: 226.23 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.5 0 19
Processing: 181 479 186.0 444 1822
Waiting: 166 461 184.7 427 1708
Total: 181 479 186.0 444 1822
Percentage of the requests served within a certain time (ms)
50% 444
66% 525
75% 577
80% 619
90% 732
95% 819
98% 946
99% 1012
100% 1822 (longest request)

APC加速器:

Document Path: /
Document Length: 21757 bytes
Concurrency Level: 5
Time taken for tests: 98.530068 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred: 65271000 bytes
Requests per second: 30.45 [#/sec] (mean)
Time per request: 164.217 [ms] (mean)
Time per request: 32.843 [ms] (mean, across all concurrent requests)
Transfer rate: 661.84 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 2
Processing: 58 163 71.2 155 2452
Waiting: 53 158 69.6 150 2329
Total: 58 163 71.2 155 2452
Percentage of the requests served within a certain time (ms)
50% 155
66% 178
75% 193
80% 204
90% 235
95% 258
98% 285
99% 302
100% 2452 (longest request)

eAccelerator加速器:

Document Path: /
Document Length: 21757 bytes
Concurrency Level: 5
Time taken for tests: 95.983986 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred: 65271000 bytes
Requests per second: 31.26 [#/sec] (mean)
Time per request: 159.973 [ms] (mean)
Time per request: 31.995 [ms] (mean, across all concurrent requests)
Transfer rate: 679.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 3
Processing: 57 159 91.3 148 3830
Waiting: 50 152 89.8 142 3704
Total: 57 159 91.3 148 3830
Percentage of the requests served within a certain time (ms)
50% 148
66% 174
75% 193
80% 205
90% 239
95% 263
98% 289
99% 309
100% 3830 (longest request)

XCache加速器:

Document Path: /
Document Length: 21757 bytes
Concurrency Level: 5
Time taken for tests: 99.76300 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 66777000 bytes
HTML transferred: 65271000 bytes
Requests per second: 30.28 [#/sec] (mean)
Time per request: 165.127 [ms] (mean)
Time per request: 33.025 [ms] (mean, across all concurrent requests)
Transfer rate: 658.19 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 2
Processing: 59 164 83.4 155 3367
Waiting: 52 156 66.4 148 1802
Total: 59 164 83.4 155 3367
Percentage of the requests served within a certain time (ms)
50% 155
66% 178
75% 196
80% 206
90% 237
95% 263
98% 287
99% 305
100% 3367 (longest request)

3、結果摘要

  請求時間(秒) 單次請求時間(毫秒) 最大內存佔用(MB) 最小內存佔用(MB)
None 10.41 96.08 24 24
APC 30.45 32.84 21 21
eAccelerator 31.26 31.99 23 18
XCache 30.28 33.02 29 19

四、PHP加速器比較結果總結

     1、通過測試得出eAccelerator在請求時間和內存佔用綜合方面是最好的。

     2、通過測試得出使用加速器比無加速器在請求時間快了3倍左右。

     3、通過各個官方觀察,XCache是更新最快的,這也說明最有發展的。

        以上是總結結果,你也許會問我到底用那個加速器好呢?我只能告訴你,首先,用一定比不用好,其次每個加速器還有一些可以調優的參數,所以要根據你的系統環境而定,然後,我個人覺得你可以詳細研究下eAccelerator和XCache,這兩款潛力還是很大的,最後我從比較專業的測試網站搞了一張結果圖:

cache

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章