我应该使用哪个PHP操作码缓存来提高性能?

时间:2020-03-05 18:43:27  来源:igfitidea点击:

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

  • APC-安装指南
  • eAccelerator-安装指南
  • XCache-安装指南

我也愿意接受其他任何在我的监视下溜走的选择。

当前在运行有Apache 2和PHP 5.2的普通Debian Etch上运行

[更新1]

新增了HowtoForge安装链接

[更新2]

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

  • 登录
  • 访问主页

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

没有操作码缓存

装甲运兵车

电子加速器

X缓存

性能图(越小越好)

根据以上结果,与APC和XCache相比,eAccelerator的性能略有下降。但是,从以上数据中最重要的是,任何类型的操作码缓存都会极大地提高性能。

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

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

总结一下我的经验:

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

解决方案

回答

我不能肯定地说,但是我现在工作的地方是APC和eAccelerator。但是,这可能会影响我们,将APC集成到PHP的未来版本中(感谢Ed Haber的链接)。

回答

我在eAccelerator上取得了不错的成绩(无负载的速度提升非常明显),但是XCache似乎也很有前途。我们可能希望对每个应用程序进行一些试验,但应用程序在每个应用程序上的扩展规模可能会有所不同。

回答

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

为了做出决定,我使用了ab(apache bench)来测试服务器,并测试了三种组合(zend,eaccelerator,两者都在运行),并证明了eAccelerator本身可以提供最佳性能。

如果时间充裕,我建议我们自己进行类似的测试,然后根据结果做出决定。

回答

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

我尝试切换到eAccelerator,但最终遇到了许多分段错误(错误的容忍度较低)。 eAccelerator的主要好处是它不仅是一个操作码缓存,而且还是一个优化器。

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

回答

我使用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。 (图中的数字是10,000次调用WordPress主页的秒数)。

Zend Optimizer使一切变慢(!)。

回答

从历史上看,这些加载项引入了许多怪异的bug来进行跟踪。这些错误可能导致不一致的行为,因为它取决于缓存的状态,因此无法轻松诊断。

所以我会说:

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

但我会说:

  • 通过对应用程序进行性能分析,确保确实是PHP代码解析导致性能问题。我认为很有可能不是这样-在这种情况下,我们会通过安装其中的任何一个来浪费时间(实际上是在浪费时间浪费时间)。