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

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

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

摘要: 详细比较 PHP 三加速扩展 APC、xcache、eAccelerator 的性能 PHP 加速器是为提高 PHP 执行效率,从而缓存 PHP 中间代码的操作。以后执行 PHP 就不用再解析代码,可直接调用 PHP 中间代码,这样可大大提高 PHP 执 ...
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)

业务范围:

Linux 云计算 IaaS SaaS 服务器架设 开发 部署 维护

高仿真低成本,可动画 VR 5D 数字样机建模 开发 规划

内外部效率优化 APP 定制 IT 外包,数据管理 分析 挖据

标准 非标设备全流程研发,PLC 单片机 工控系统开发集成

微信智能互动营销策划,Web 网站代码 SEO 排名优化,大数据网络推广

文档 网页多语种翻译,数据资料标准化版本化 数字化管理的规划 研发 实施

跨平台 硬件 浏览器 HTML5 Web 电子商务平台 静态动态网站开发 部署 维护

Linux Windows 平台内外网 PLM ERP 数字化系统 服务器架设 开发 部署 维护
PySide1.2 2.x PyQt4 的 QComboBox.currentTextChanged 信号无响应解决办法
PySide1.2 2.x PyQt4 的 QComboBox.currentTextChanged 信号无响应解决办法 在 PySide1.2 PySide2.x PyQt4 中,使用 QComboBox.currentTextChanged 信号有时会无响应,如下[24/2020-06-29]
OpenCV 4.x 官方文档编制 中文教程 全人工翻译 中文在线手册
OpenCV 4.x 官方文档编制 中文教程 全人工翻译 中文在线手册 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 OpenCV 4.2.0。 OpenCV 4.2.0 [73/2020-06-15]
OpenCV 4.x 官方文档编制 中文教程 全人工翻译 更新日志
OpenCV 4.x 官方文档编制 中文教程 全人工翻译 更新日志 最近把网页背景由白色改为黑色,保护视力,不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本[27/2020-06-15]
CMake 3.x 官方文档编制 中文手册 全人工翻译 更新日志
CMake 3.x 官方文档编制 中文手册 全人工翻译 更新日志 最近把网页背景由白色改为黑色,保护视力,不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为[23/2020-06-15]
CMake 3.x 官方文档编制 中文教程 全人工翻译 中文在线手册
CMake 3.x 官方文档编制 中文教程 全人工翻译 中文在线手册 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 CMake 3.14。 CMake 3.14 中文文[27/2020-06-15]
多功能 高效快速 批处理式 文档翻译工具 人工翻译 手动翻译
多功能 高效快速 批处理式 文档翻译工具 人工翻译 手动翻译 文档翻译及 GUI 翻译,经常需要反复修改及快速重建。若想满足这些要求,批处理技术是最佳选择。 软件开发人员在[32/2020-06-15]
OpenCV ── 以图像处理 算法为主的跨平台开源计算机视觉库
OpenCV ── 以图像处理 算法为主的跨平台开源计算机视觉库 OpenCV 的全称 Open Source Computer Vision Library,又名 “开源计算机视觉库”。OpenCV 是一个开源发行的跨[57/2020-06-15]
数字 IDE -- 全栈软件工程师编程 多功能高效 批处理式 IDE
数字 IDE -- 全栈软件工程师编程 多功能高效 批处理式 IDE 由于所有编程语言,源代码的主要表达形式仍是文本。 而文本在数字化 批处理化方面天然优势明显,如标准统一 (虽[27/2020-06-06]
多功能高效 批处理式 Python IDE Python 编辑器 新时代新理念
多功能高效 批处理式 Python IDE Python 编辑器 新时代新理念 计算机被发明以来,IDE 理念从最初的文本式,到后来的带图形界面式,再是图形可交互式,之后再无突破 (虽然有[107/2020-06-06]
CEO首席执行官 CFO首席财务官 COO首席运营官 CTO首席技术官
CEO首席执行官 CFO首席财务官 COO首席运营官 CTO首席技术官 CEO首席执行官 CEO 是 Chief Executive Officer 的缩写,中文译为首席执行官。 CEO 是在一个企业中负责日常事[60/2020-06-04]

Archiver|Sitemap|小黑屋|德云社区   

GMT+8, 2020-7-12 11:12 , Processed in 0.035781 second(s), 29 queries .

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

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

返回顶部