参与测试的加速器: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程序的加速效果更加强悍,敬请期待!

上一篇:LAMP-phpMyAdmin

下一篇:LAMP-NFS

本文出自 “小小忍者” 博客,请务必保留此出处http://xxrenzhe.blog.51cto.com/4036116/1383568

转载于:https://blog.51cto.com/maxsong/1579854

LAMP-各PHP加速器性能剖析相关推荐

  1. 性能服务器解读,【MySQL数据库】第三章解读:服务器性能剖析(上)

    前言: 保持空杯精神,使用性能剖析,专注于测量服务器的时间花费在哪里,思考1.如何确认服务器是否达到了性能最佳状态,2.某条语句为什么不够快,诊断被用户描述为"停顿.堆积.卡死"的 ...

  2. mysql服务器性能剖析,高性能MySQL–服务器性能剖析

    性能剖析一般有两个步骤:测量任务所花费的时间;然后对结果进行统计和排序,将重要的任务排到前面.无法测量就无法有效的优化.完成一项任务所需要的时候可以分为两部分:执行时间和等待时间. 当一个资源变得效率 ...

  3. 测试服务器性能常用算法,服务器性能剖析(profiling)之——简介

    性能剖析(profiling)是专注于测量服务器时间花费在哪里的一种技术,这里"性能即响应时间". 测量是一项很有挑战性的工作,并且分析结果也同样有挑战性,测出时间花在哪里,和知道 ...

  4. Java Switch语句及性能剖析(转载补充)

    为什么80%的码农都做不了架构师?>>>    Java Switch语句及性能剖析(转载补充) 一.基本用 switch的case语句可以处理int,short,byte,char ...

  5. android 耗电量分析,使用能耗性能剖析器检查耗电量

    能耗性能剖析器可帮助您了解应用在哪里耗用了不必要的电量. 能耗性能剖析器会监控 CPU.网络无线装置和 GPS 传感器的使用情况,并直观地显示其中每个组件消耗的电量.能耗性能剖析器还会显示可能会影响耗 ...

  6. Linux内核性能剖析的方法学和主要工具

    计算机科学的先驱Donald Knuth(高德纳)曾经说过:"过早的优化是万恶之源",更详细的原文如下:"We should forget about small eff ...

  7. 《高性能MySQL》 第三章 服务器性能剖析 读书笔记

    性能优化 基于响应时间 性能剖析 测量任务所花费的时间 对结果进行统计和排序,将重要的任务排到前面 时间分类 执行时间 等待时间 理解性能剖析 值得优化的查询 一些只占总响应时间比重很小的査询是不值得 ...

  8. Go语言性能剖析利器--pprof实战

    作者:耿宗杰 前言 关于pprof的文章在网上已是汗牛充栋,却是千篇一律的命令介绍,鲜有真正实操的,本文将参考Go社区资料,结合自己的经验,实战Go程序的性能分析与优化过程. 优化思路 首先说一下性能 ...

  9. MySQL性能剖析工具(pt-query-digest)

    MySQL性能剖析工具(pt-query-digest)[转] 这个工具同样来自percona-toolkit  该工具集合的其他工具  MySQL Slave异常关机的处理 (pt-slave-re ...

  10. LinuxCNC性能剖析

    系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化. 性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码.代码优化的目标是针对具体性能问题而优 ...

最新文章

  1. spring jpa @Query中使用in
  2. 简简单单用OpenCV让一只小猫咪变成奶凶奶凶的科技猫
  3. Android 绿豆通讯录【 SQLite数据库(增删改查、展示数据) + ListView数据展示控件(展示所有数据) 】
  4. VTK:场景边界SceneBounds用法实战
  5. Java解析Excel工具类(兼容xls和xlsx)
  6. getRealPath(““)与getRealPath(“/“)区别及用法——计算机网络相关学习笔记
  7. 使用iOS 4越狱iPhone或iPod Touch
  8. python3 判断大小端的一种方法
  9. rudesocket如何使用_c++ socket 客户端库 socks5 客户端 RudeSocket™ Open Source C++ Socket Library...
  10. matplotlib安装失败_Python | 安装中遇到“0x80072f7d 未指定的错误”
  11. lua 差值 日期_Lua获取系统时间和时间格式化方法及格式化参数
  12. 小马Win7永久激活工具—OemY3.1 NT6通用完美激活
  13. php ora01017,使用dblink出现ORA-01017
  14. 混合线性模型学习笔记4
  15. liu系统的混沌特性及其matlab仿真,毕业论文-Liu系统的混沌特性及其Matlab仿真
  16. AI不思议|除了猜用户手绘图案,还能猜什么?
  17. 最新小笑授权系统源码V6.5+开心免授权版
  18. 组合导航原理剖析(四):惯性和GNSS器件选型与误差来源
  19. Linux学习笔记:
  20. 单相交流调压电路matlab仿真,单相斩控式交流调压电路

热门文章

  1. 执行下面程序段后,y的结果是____。int x,y;x=y=2;x=x-2(y=y+1);printf(“%d“,y);A。3 B.2 C.1 D。0
  2. Kotlin 的优点
  3. 7-5 猴子选大王 (20 分)
  4. ruby,gem,rails之间的关系
  5. Spring框架学习之SpringAOP(二)
  6. java 23中设计模式
  7. cookie Web Storage API
  8. java 基本理论知识点
  9. C语言课程2——我们交流的工具:Coding.net
  10. grep和正则表达式