我应该使用哪个 PHP 操作码缓存器来提高性能?[关闭]
-
09-06-2019 - |
题
我正在尝试提高高负载下的性能,并希望实现操作码缓存。我应该使用以下哪一个?
我也对任何其他未被我注意到的替代方案持开放态度。
目前在带有 Apache 2 和 PHP 5.2 的 Debian Etch 上运行
[更新1]
添加了 HowtoForge 安装链接
[更新2]
根据给出的答案和反馈,我在我的应用程序上使用以下 Apache JMeter 测试计划测试了所有 3 个实现:
- 登录
- 访问主页
50个并发连接,结果如下:
无操作码缓存
APC
电子加速器
X缓存
性能图(越小越好)
从上面的结果来看,eAccelerator相比APC和XCache在性能上略有优势。然而,从上述数据来看,最重要的是任何类型的操作码缓存都会极大地提高性能。
由于以下两个原因,我决定使用 APC:
- 软件包可在官方 Debian 存储库中找到
- 更多功能控制面板
总结一下我的经验:
易于安装:APC > eAccelerator > XCache
表现:e加速器 > APC、XCache
控制面板:APC > XCache > eAccelerator
解决方案
我认为答案可能取决于您正在运行的 Web 应用程序的类型。两年前我不得不自己做出这个决定,并且无法在 Zend Optimizer 和 eAccelerator 之间做出选择。
为了做出决定,我使用 ab (apache bench) 来测试服务器,并测试了三种组合(zend、eaccelerator,两者都在运行),并证明 eAccelerator 本身提供了最大的性能。
如果您有充裕的时间,我建议您自己进行类似的测试,并根据结果做出决定。
其他提示
我使用 APC 是因为它很容易在 Windows 中安装,而且我正在 WAMP 上进行开发。
这里讨论了将 APC 集成到 PHP6 中:http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc
这里有关于在 Debian Etch 上安装 APC 的说明:http://www.howtoforge.com/apc-php5-apache2-debian-etch
我跑过好几个 使用 eAcclerator、APC、XCache 进行基准测试, 、Zend Optimizer(尽管 Zend 是一个优化器,而不是一个缓存)。
基准测试结果 http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png
结果:eAccelerator 是最快的(在所有测试中),其次是 XCache 和 APC。(图中的那个是调用WordPress主页10000次的秒数)。
Zend Optimizer 使一切变得更慢(!)。
我不能肯定地告诉你,但我现在工作的地方正在研究APC和eAccelerator。然而,这可能会影响你—— APC 将集成到 PHP 的未来版本中 (感谢埃德·哈伯提供的链接)。
我在 eAccelerator 方面取得了很好的成功(无负载时的速度提升是显着的),但 XCache 似乎也很有前途。您可能希望对每个项目进行一些试验,但您的应用程序可能会在每个项目上进行不同的扩展。
我已经使用 XCache 一年多了,没有任何问题。
我尝试切换到 eAccelerator,但最终出现了一堆分段错误(它对错误的容忍度较低)。eAccelerator 的主要好处是它不仅仅是一个操作码缓存,它还是一个优化器。
您应该使用其中的每一个来全面测试您的应用程序,以确保没有任何问题,然后我将使用 apachebench 在负载下测试它。
历史上,这些附加组件引入了许多需要追踪的奇怪错误。这些错误可能会导致不一致的行为,并且无法轻松诊断,因为它取决于缓存的状态。
所以我想说:
- 不要使用以上任何一种。相反,购买更多的锡,它更可靠(即无错误)提高性能的方法。或者
- 在对您的应用进行测试后,选择上述最坚固的一项。
但我想说:
- 通过分析您的应用程序,确保确实是 PHP 代码解析导致了性能问题。我认为很可能不是——在这种情况下,安装它们中的任何一个都是在浪费时间(实际上,是在消极地高效地利用时间)。