设为首页 收藏本站
查看: 888|回复: 0

[经验分享] PHP加速器APC、eAccelerator、xCache

[复制链接]

尚未签到

发表于 2017-3-29 11:42:19 | 显示全部楼层 |阅读模式
  一、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在使用它。在http://pecl.php.net/package/APC中包含了所有apc安装包,你可以根据自己的需求选择相应的版本。state包含stable和beta两种状态,下载安装包时请留意。


# tar zxvf APC-3.1.9.tgz

# cd APC-3.1.9

# /usr/local/php5/bin/phpize

# ./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php5/bin/php-config

# make && make install

# cp /usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/apc.so /usr/local/php5/lib/php/extensions/apc.so


注:#/usr/local/php5/bin/phpize用于生成安装configure文件。


在配置文件php.ini的文件末尾加入以下内容:

[apc]
extension=apc.so
apc.enabled = 1
apc.cache_by_default = on
apc.shm_segments = 1
apc.shm_size = 128 M
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 1024
apc.write_lock = On
apc.gc_ttl=3600
apc.ttl=0
apc.mmap_file_mask=/tmp/apc.XXXXXX
   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/php5/bin/phpize

# ./configure -enable-eaccelerator=shared -with-php-config=/usr/local/php5/bin/php-config

# make && make install

# cp /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php5/lib/php/extensions/


创建缓存目录:

# mkdir /tmp/eaccelerator

# chmod 777 /tmp/eaccelerator


在配置文件php.ini的文件末尾加入以下内容:

[eAccelerator]
extension = 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.prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"

   
3、安装配置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/php5/bin/phpize

# ./configure -enable-xcache -enable-xcache-coverager -with-php-config=/usr/local/php5/php-config

# make && make install

# cp /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php5/lib/php/extensions/


创建缓存目录:

# mkdir /tmp/xcache

# chmod 777 /tmp/xcache


在配置文件php.ini的文件末尾加入以下内容:

[xcache]
extension = xcache.so
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 = ""
   
三、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)
None10.4196.082424

APC
30.4532.842121

eAccelerator
31.2631.992318

XCache
30.2833.022919
  

四、PHP加速器比较结果总结




1、通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的。

2、通过测试得出使用加速器比无加速器在请求时间快了3倍左右。

3、通过各个官方观察,XCache是更新最快。


以上是总结结果,你也许会问我到底用那个加速器好呢?我只能告诉你,首先,用一定比不用好,其次每个加速器还有一些可以调优的参数,所以要根据你的系统环境而定,然后,我个人觉得你可以详细研究下eAccelerator和XCache,这两款潜力还是很大的。
  专业测试网站对比图:




本文内容来自:http://killker.com/blog/?p=94

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-357024-1-1.html 上篇帖子: 搭建windows下php环境(一) 下篇帖子: eAccelerator 配置(PHP代码加速器)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表