python html5 bootstrap 视频教程
德云社区 门户 行业资讯 行业标准 IT 标准 查看内容

详细比较 PHP 三加速扩展 APC、xcache、eAccelerator 的性能

2014-12-31 13:01| 发布者: digitser| 查看: 1043| 评论: 2|原作者: gmail

摘要: 详细比较 PHP 三加速扩展 APC、xcache、eAccelerator 的性能 PHP 加速器是为提高 PHP 执行效率,从而缓存 PHP 中间代码的操作。以后执行 PHP 就不用再解析代码,可直接调用 PHP 中间代码,这样可大大提高 PHP 执 ...
数字 IDE 网页 ── 所见即所得编写 HTML4、HTML5 静态-动态网站,生成 Robots、站点地图,死链检测,强大文本编辑器功能。。。集成中英自动 TTS 文本诵读功能。。。
数字 IDE Python ── 支持编写 Python、Django、HTML5、XML、C/C++、Java、Perl、PHP、Ruby、C#、VB .Net 等程序源代码。。。集成了很多常用编程智能辅助工具。。。
业务范围:
01、企业 \"内部 | 外部\" 数据管理、分析、挖据
02、企业效率优化专用 APP 程序定制、IT 外包
03、智能数字化系统平台架设、开发、部署、维护
04、高仿真、低成本,可动画-可 VR 数字样机建模、开发、规划
05、企业 Linux 云计算 \"IaaS | SaaS\" 服务器架设、开发、部署、维护
06、\"标准 | 非标\" 设备全流程研发,PLC、单片机、工控系统开发、集成
07、企业 Linux / Windows 平台 PLM、ERP 系统架设、开发、部署、维护
08、企业 Linux / Windows 平台 \"内网 | 外网\" 服务器架设、开发、部署、维护
09、企业微信公众号智能互动营销、策划,Web 网站代码、SEO 排名优化,大数据网络推广
10、企业跨平台、跨硬件、跨浏览器 HTML5 Web 电子商务平台、\"静态 | 动态\" 网站开发、部署、维护
11、企业文档、资料、公司网页多语种翻译,数据资料标准化、版本化、数字化管理的规划、研发、实施
数字翻译 ── 能批量翻译文档 GUI 用户界面。。。网页浏览 批处理 全文搜索 全文替换 全文删除 全文插入 数据比较 。。。集成中英自动 TTS 文本诵读功能。。。
AI人工智能 语音助理 人工翻译 教程
详细比较 PHP 三加速扩展 APC、xcache、eAccelerator 的性能

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 树。

002.png

PHP 加速器工作原理对应的就是第 4 步,目的是为避免 PHP 每次请求都重复编译 PHP 代码。因为对高访问量网站进行大量编译,往往还没有执行速度快?所以,这里面有个瓶颈就是 PHP 的重复编译,既影响速度又加重服务器负载。为解决此问题,PHP 加速器就这样应运而生。


1、 安装配置 APC

APC 全称 Alternative PHP Cache,官方译为 ”可选 PHP 缓存”。它是 PHP PECL 中的一个扩展,下面开始安装 (Ubuntu 环境):

  1. wget http://pecl.php.net/get/APC-3.0.19.tgz
  2. tar xvzf APC-3.0.19.tgz
  3. cd APC-3.0.19/APC-3.0.19
  4. /usr/local/php/bin/phpize
  5. ./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php-config
  6. make
  7. make install
复制代码

配置 APC,因为 PECL 扩展路径有变化;所以,要移动编译好的文件:

  1. 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 中:

  1. extension_dir = "/usr/local/php/lib/php/extensions/PECL"
  2. extension = apc.so
  3. ; APC
  4. apc.enabled = 1
  5. apc.shm_segments = 1
  6. apc.shm_size = 64
  7. apc.optimization = 1
  8. apc.num_files_hint = 0
  9. apc.ttl = 0
  10. apc.gc_ttl = 3600
  11. apc.cache_by_default = on
复制代码

重启 Apache 就会在 phpinfo() 信息中显示。


2、 安装配置 eAccelerator

eAccelerator 的前身其实是 truck-mmcache,因为开发 truk-mmcache 的人被 Zend 给招安了。所以,开发 eAccelerator 的人继承了 truk-mmcache 的一些特性,设计出 eAccelerator 加速器。安装过程如下:

  1. wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2
  2. tar -jxf eaccelerator-0.9.5.tar.bz2
  3. cd eaccelerator-0.9.5
  4. /usr/local/php/bin/phpize
  5. ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/php/bin/php-config
  6. make
  7. make install
  8. mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/PECL
复制代码

将以下代码加入 php.ini 文件中

  1. extension = eaccelerator.so
  2. ; eAccelerator
  3. eaccelerator.shm_size = "16"
  4. eaccelerator.cache_dir = "/tmp/eaccelerator"
  5. eaccelerator.enable = "1"
  6. eaccelerator.optimizer = "1"
  7. eaccelerator.check_mtime = "1"
  8. eaccelerator.debug = "0"
  9. eaccelerator.filter = ""
  10. eaccelerator.shm_max = "0"
  11. eaccelerator.shm_ttl = "0"
  12. eaccelerator.prune_period = "0"
  13. eaccelerator.shm_only = "0"
  14. eaccelerator.compress = "1"
  15. eaccelerator.compress_level = "9"
复制代码

创建缓存目录,重启 Apache

  1. mkdir /tmp/eaccelerator
  2. chmod 777 /tmp/eaccelerator
  3. /usr/local/apache/apachectl restart
复制代码

用 phpinfo() 检查是否安装成功。


3、 安装配置 XCache

XCache 是国人自己开发的东西,且 XCache 在速度和性能上都还不错。

  1. wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
  2. tar xvzf xcache-1.2.2.tar.gz
  3. cd xcache-1.2.2
  4. /usr/local/php/bin/phpize
  5. ./configure –enable-xcache –enable-xcache-coverager –with-php-config=/usr/local/php/php-config
  6. make
  7. make install
  8. mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so /usr/local/php/lib/php/extensions/PECL
复制代码

在 php.ini 中添加以下配置信息:

  1. extension = xcache.so
  2. ; xcache
  3. xcache.admin.user = "admin"
  4. xcache.admin.pass = "(执行) echo ’(你的密码)’|md5sum(得出的密文)"
  5. ;
  6. xcache.size = 24M
  7. xcache.shm_scheme = "mmap"
  8. xcache.count = 2
  9. xcache.slots = 8k
  10. xcache.ttl = 0
  11. xcache.gc_interval = 0

  12. xcache.var_size = 8M
  13. xcache.var_count = 1
  14. xcache.var_slots = 8k
  15. xcache.var_ttl = 0
  16. xcache.var_maxttl = 0
  17. xcache.var_gc_interval = 300
  18. xcache.test = Off
  19. xcache.readonly_protection = On
  20. xcache.mmap_path = "/tmp/xcache"
  21. xcache.coredump_directory = ""
  22. xcache.cacher = On
  23. xcache.stat = On
  24. xcache.optimizer = Off
  25. ;
  26. xcache.coverager = On
  27. xcache.coveragedump_directory = ""
复制代码

创建缓存目录,重启 Apache

  1. mkdir /tmp/xcache
  2. chmod 777 /tmp/xcache
  3. /usr/local/apache/bin/apachectl restart
复制代码

用 phpinfo() 检查是否安装成功。


4、 PHP 加速器测试

测试环境

硬件: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 次请求)


测试结果

无任何加速器:

  1. Document Path: /
  2. Document Length: 21757 bytes
  3. Concurrency Level: 5
  4. Time taken for tests: 288.255212 seconds
  5. Complete requests: 3000
  6. Failed requests: 0
  7. Write errors: 0
  8. Total transferred: 66777000 bytes
  9. HTML transferred: 65271000 bytes
  10. Requests per second: 10.41 [#/sec] (mean)
  11. Time per request: 480.425 [ms] (mean)
  12. Time per request: 96.085 [ms] (mean, across all concurrent requests)
  13. Transfer rate: 226.23 [Kbytes/sec] received
  14. Connection Times (ms)
  15. min mean[+/-sd] median max
  16. Connect: 0 0 0.5 0 19
  17. Processing: 181 479 186.0 444 1822
  18. Waiting: 166 461 184.7 427 1708
  19. Total: 181 479 186.0 444 1822
  20. Percentage of the requests served within a certain time (ms)
  21. 50% 444
  22. 66% 525
  23. 75% 577
  24. 80% 619
  25. 90% 732
  26. 95% 819
  27. 98% 946
  28. 99% 1012
  29. 100% 1822 (longest request)
复制代码

APC 加速器:

  1. Document Path: /
  2. Document Length: 21757 bytes
  3. Concurrency Level: 5
  4. Time taken for tests: 98.530068 seconds
  5. Complete requests: 3000
  6. Failed requests: 0
  7. Write errors: 0
  8. Total transferred: 66777000 bytes
  9. HTML transferred: 65271000 bytes
  10. Requests per second: 30.45 [#/sec] (mean)
  11. Time per request: 164.217 [ms] (mean)
  12. Time per request: 32.843 [ms] (mean, across all concurrent requests)
  13. Transfer rate: 661.84 [Kbytes/sec] received
  14. Connection Times (ms)
  15. min mean[+/-sd] median max
  16. Connect: 0 0 0.0 0 2
  17. Processing: 58 163 71.2 155 2452
  18. Waiting: 53 158 69.6 150 2329
  19. Total: 58 163 71.2 155 2452
  20. Percentage of the requests served within a certain time (ms)
  21. 50% 155
  22. 66% 178
  23. 75% 193
  24. 80% 204
  25. 90% 235
  26. 95% 258
  27. 98% 285
  28. 99% 302
  29. 100% 2452 (longest request)
复制代码

eAccelerator 加速器:

  1. Document Path: /
  2. Document Length: 21757 bytes
  3. Concurrency Level: 5
  4. Time taken for tests: 95.983986 seconds
  5. Complete requests: 3000
  6. Failed requests: 0
  7. Write errors: 0
  8. Total transferred: 66777000 bytes
  9. HTML transferred: 65271000 bytes
  10. Requests per second: 31.26 [#/sec] (mean)
  11. Time per request: 159.973 [ms] (mean)
  12. Time per request: 31.995 [ms] (mean, across all concurrent requests)
  13. Transfer rate: 679.39 [Kbytes/sec] received
  14. Connection Times (ms)
  15. min mean[+/-sd] median max
  16. Connect: 0 0 0.1 0 3
  17. Processing: 57 159 91.3 148 3830
  18. Waiting: 50 152 89.8 142 3704
  19. Total: 57 159 91.3 148 3830
  20. Percentage of the requests served within a certain time (ms)
  21. 50% 148
  22. 66% 174
  23. 75% 193
  24. 80% 205
  25. 90% 239
  26. 95% 263
  27. 98% 289
  28. 99% 309
  29. 100% 3830 (longest request)
复制代码

XCache 加速器:

  1. Document Path: /
  2. Document Length: 21757 bytes
  3. Concurrency Level: 5
  4. Time taken for tests: 99.76300 seconds
  5. Complete requests: 3000
  6. Failed requests: 0
  7. Write errors: 0
  8. Total transferred: 66777000 bytes
  9. HTML transferred: 65271000 bytes
  10. Requests per second: 30.28 [#/sec] (mean)
  11. Time per request: 165.127 [ms] (mean)
  12. Time per request: 33.025 [ms] (mean, across all concurrent requests)
  13. Transfer rate: 658.19 [Kbytes/sec] received
  14. Connection Times (ms)
  15. min mean[+/-sd] median max
  16. Connect: 0 0 0.0 0 2
  17. Processing: 59 164 83.4 155 3367
  18. Waiting: 52 156 66.4 148 1802
  19. Total: 59 164 83.4 155 3367
  20. Percentage of the requests served within a certain time (ms)
  21. 50% 155
  22. 66% 178
  23. 75% 196
  24. 80% 206
  25. 90% 237
  26. 95% 263
  27. 98% 287
  28. 99% 305
  29. 100% 3367 (longest request)
复制代码

结果如下图所示

20140326114215271.png
测试比较总结:

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

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

3、通过观察,XCache 是更新最快的,这也说明它是最有发展的。


注意:

1、程序环境非必要 Zend Optimizer 的情况下,首选 APC (它和 Zend Optimizer 是不兼容的);且 APC 的兼容性及性能,表现都非常优秀。


2、若 PHP 环境需要 Zend Optimizer,就安装 eAccelerator,并把 Zend Optimizer 的压缩级别调到 0。


zend optimizer 是一个代码优化模块,可调优 PHP 代码,实现原理:对那些在被最终执行之前,由运行时编译器 (Run-Time Compiler) 产生的代码进行优化。代码性能可提高 40% 到 100%,从这一点严格说,不具备强大的缓存能力。


eAccelerator 是一个将编译后的 PHP 代码缓存在 share memory 中的模块。通过访问共享内存可得到编译后的代码并直接执行,以提高效率。它对 PHP 的执行效率的提高还是很大的。同时,eAccelerator 也可缓存数据至文件中。这部分由于是对文件的操作,对大多数的文件 cache 来说,原理相似,性能相近。


APC 原理上来讲和 eAccelerator 相近,所以差别不大。不通过修改参数详细测试,是不能看出两者优劣的。所以二者取其一即可。


版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

路过

雷人

握手

鲜花

鸡蛋

相关阅读

发表评论

最新评论

引用 gmail 2014-12-31 12:01
LNMP, LAMP, Apache, PHP, APC

引用 gmail 2014-12-31 12:01
LNMP, LAMP, Apache, PHP, APC

查看全部评论(2)

自动立式分页纸箱赋码系统 ── 全自动 专业 立式分页 瓦楞纸 水性油墨 贴标 喷码 检测系统
料斗式自动双头软管贴标机 ── 高速 双头 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机
全自动双侧面、卷瓶不干胶贴标机 ── 全自动 扁瓶 单侧面 双侧面 高速圆瓶外表面圆周 普通标签 透明标签 不干胶贴标机
落地式半自动平面贴标机 ── 半自动 经济型 普通标签 透明标签 不干胶 上平面贴标机
全自动高速立式圆瓶贴标机 ── 全自动 高速 普通标签 透明标签 不干胶 立式圆瓶贴标机
全自动单料斗卧式圆瓶贴标机 ── 透明标签 普通标签 医药 口服液 单料斗卧式 高重心 小圆瓶 电池 不干胶贴标机
料斗式自动双头软管贴标机 ── 高速 双头 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机
料斗式自动软管贴标机 ── 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机

Archiver|Sitemap|小黑屋|   

GMT+8, 2019-12-7 12:09 , Processed in 0.172421 second(s), 29 queries .

技术支持 乐数软件     版权所有 © 2014-2020 德云社区

工业和信息化部: 粤ICP备14079481号-2

返回顶部