我应该使用哪个 PHP 操作码缓存器来提高性能? [关闭]

Posted

技术标签:

【中文标题】我应该使用哪个 PHP 操作码缓存器来提高性能? [关闭]【英文标题】:Which PHP opcode cacher should I use to improve performance? [closed] 【发布时间】:2010-09-06 22:07:39 【问题描述】:

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

APC - Installation Guide eAccelerator - Installation Guide XCache - Installation Guide

我也愿意接受任何其他在我的雷达下溜走的替代方案。

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

[更新 1]

添加了 HowtoForge 安装链接

[更新 2]

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

登录 访问主页

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

无操作码缓存

APC

eAccelerator

XCache

性能图(越小越好)

从以上结果来看,eAccelerator 与 APC 和 XCache 相比在性能上略有优势。但是,从上述数据中最重要的是,任何类型的操作码缓存都能极大地提升性能。

由于以下两个原因,我决定使用 APC:

软件包在官方 Debian 存储库中可用 更多功能的控制面板

总结一下我的经验:

易于安装:APC > eAccelerator > XCache 性能:eAccelerator > APC、XCache 控制面板:APC > XCache > eAccelerator

【问题讨论】:

APC 出现连接重置等问题! @Pacerier 什么是on-topic的定义多年来发生了变化,所以这“变成”了离题。 【参考方案1】:

我认为答案可能取决于您正在运行的 Web 应用程序的类型。两年前我不得不自己做出这个决定,无法在 Zend Optimizer 和 eAccelerator 之间做出选择。

为了做出决定,我使用 ab (apache bench) 来测试服务器,并测试了三种组合(zend、eaccelerator、都在运行),证明单独使用 eAccelerator 提供了最大的性能。

如果您有足够的时间,我建议您自己进行类似的测试,并根据您的结果做出决定。

【讨论】:

为什么没有提到 HipHop? 因为 HipHop 既不是操作码缓存,在被问到这个问题时也不存在。【参考方案2】:

我已经运行了几个benchmarks with eAcclerator, APC, XCache 和 Zend Optimizer(尽管 Zend 是一个优化器,而不是缓存)。

Benchmark Results http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

结果:eAccelerator 最快(在所有测试中),其次是 XCache 和 APC。 (图中的一个是调用 WordPress 主页 10000 次的秒数)。

Zend Optimizer 让一切变得更慢 (!)。

【讨论】:

【参考方案3】:

我使用 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

【讨论】:

【参考方案4】:

我不能肯定地告诉你,但我现在工作的地方是 APC 和 eAccelerator。但是,这可能会影响您 - APC will be integrated into a future release of PHP(感谢 Ed Haber 提供的链接)。

【讨论】:

【参考方案5】:

我在 eAccelerator 上取得了很好的成功(在无负载的情况下速度提高很明显),但 XCache 似乎也很有希望。不过,您可能希望对每一个都运行一些试验,您的应用程序可能会在每一个上进行不同的扩展。

【讨论】:

【参考方案6】:

我已经使用 XCache 一年多了,一点问题都没有。

我尝试切换到 eAccelerator,但结果出现了一堆分段错误(它对错误的容忍度较低)。 eAccelerator 的主要好处是它不仅仅是一个操作码缓存,它还是一个优化器。

你应该用它们中的每一个对你的应用程序进行全面测试,以确保没有任何问题,然后我会使用 apachebench 在负载下对其进行测试。

【讨论】:

【参考方案7】:

这些插件历来引入了许多奇怪的错误来追踪。这些错误可能会导致无法轻松诊断的不一致行为,因为它取决于缓存的状态。

所以我会说:

    请勿使用上述任何一种。相反,购买更多的锡,这是一种更可靠(即无错误)的提高性能的方法。 或 在测试过您的应用程序的裤子后,选择上述任何一种最可靠的方法。

但我想说:

    通过分析您的应用程序,确保确实是 PHP 代码解析导致了您的性能问题。我认为它极有可能不是 - 在这种情况下,安装其中任何一个都是在浪费时间(实际上是在消极地利用时间)。

【讨论】:

我们可以使用其中的一些来缓存数据。例如,APC 能够缓存数据和操作码。但我真的同意你的最后一句话:“确保确实是 PHP 代码解析导致了性能问题”

以上是关于我应该使用哪个 PHP 操作码缓存器来提高性能? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

缓存 PHP 数组

软件缓存是不是应该提高 NUMA 机器上的性能

PHP - 内存缓存 - HTML 缓存

APC 操作码缓存的工作原理

深入理解PHP Opcode缓存原理

深入理解PHP Opcode缓存原理