我正在尝试提高高负载下的性能,并希望实现操作码缓存。我应该使用以下哪一个?

我也对任何其他未被我注意到的替代方案持开放态度。

目前在带有 Apache 2 和 PHP 5.2 的 Debian Etch 上运行

[更新1]

添加了 HowtoForge 安装链接

[更新2]

根据给出的答案和反馈,我在我的应用程序上使用以下 Apache JMeter 测试计划测试了所有 3 个实现:

  • 登录
  • 访问主页

50个并发连接,结果如下:

无操作码缓存
No Opcode Caching

APC
APC

电子加速器
eAccelerator

X缓存
XCache

性能图(越小越好)
Performance Graph

从上面的结果来看,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 在负载下测试它。

历史上,这些附加组件引入了许多需要追踪的奇怪错误。这些错误可能会导致不一致的行为,并且无法轻松诊断,因为它取决于缓存的状态。

所以我想说:

  1. 不要使用以上任何一种。相反,购买更多的锡,它更可靠(即无错误)提高性能的方法。或者
  2. 在对您的应用进行测试后,选择上述最坚固的一项。

但我想说:

  1. 通过分析您的应用程序,确保确实是 PHP 代码解析导致了性能问题。我认为很可能不是——在这种情况下,安装它们中的任何一个都是在浪费时间(实际上,是在消极地高效地利用时间)。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top