三款免费的PHP加速器:APC、eAccelerator、XCache性能比较
这些加速器统称Opcode Cache,全部都支持opcode cache功能,性能差距也不大,除opcode cache外,人们也经常用他们的变量缓存功能(与memcached不一样,apc/eac/xcache他们是存在本地内存里的,免去了网络开销,更快),早期的eac不支持变量缓存,后来支持了。xcache是中国人作品,几乎跟apc功能一样。
此外,有人曾经遭遇APC Bomb问题,据国外社区说xcache在这个问题上表现好一点,后来我们用另外的方法搞定了,没有测试数据表明是不是xcache好一点。
apc bomb问题参见:http://notmysock.org/blog/php/user-cache-timebomb.html
Turck MMCache刚出来的时候很强,性能超载Zend官方的加速器,后来Zend公司把Turck的作者挖过去了,这个产品也就退出江湖了。开源爱好者们在Turck基础上fork了一份代码,就是后来的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树。
PHP加速器相应的就是第四步,它的目的就是防止PHP每次请求都重复编译PHP代码,因为在高访问量的网站上,大量的编译往往没有执行速度快呢?所以这 里面有个瓶颈就是PHP的重复编译既影响了速度又加载了服务器负载,为了解决此问题,PHP加速器就这样诞生了。
二、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、测试结果
请求时间(秒) | 单次请求时间(毫秒) | 最大内存占用(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是更新最快的,这也说明最有发展的。