¿Qué cacher de opcode PHP debo usar para mejorar el rendimiento? [cerrado]


Estoy tratando de mejorar el rendimiento bajo alta carga y me gustaría implementar el almacenamiento en caché de opcode. ¿Cuál de los siguientes debería usar?

También estoy abierto a cualquier otra alternativa que se haya deslizado bajo mi radar.

Actualmente en ejecución en un archivo Debian Etch con Apache 2 y PHP 5.2

[Actualizar 1]

HowtoForge enlaces de instalación añadidos

[Actualizar 2]

Basado en las respuestas y comentarios dados, he probado todas las 3 implementaciones usando el siguiente plan de prueba de Apache JMeter en mi aplicación:

  • Iniciar sesión
  • Acceder a la Página de inicio

Con 50 conexiones concurrentes, los resultados son los siguientes:

Sin código operativo Almacenamiento en caché
Sin Almacenamiento en Caché de Opcode

APC
APC

EAccelerator
eAccelerator

XCache
XCache

Gráfico de rendimiento (más pequeño es mejor)
Gráfico de Rendimiento

De los resultados anteriores, eAccelerator tiene una ligera ventaja en el rendimiento en comparación con APC y XCache. Sin embargo, lo que más importa de los datos anteriores es que cualquier tipo de almacenamiento en caché de opcode da un tremendo impulso en el rendimiento.

He decidido usar APC debido a los siguientes 2 razones:

  • El paquete está disponible en el repositorio oficial de Debian
  • Panel de control más funcional

Para resumir mi experiencia:

Facilidad de instalación: APC > eAccelerator > XCache
Rendimiento: eAccelerator > APC, XCache
Panel de control: APC > XCache > eAccelerator

Author: Neysor, 2008-08-26

7 answers

Creo que la respuesta puede depender del tipo de aplicaciones web que esté ejecutando. Tuve que tomar esta decisión yo mismo hace dos años y no podía decidir entre Zend Optimizer y eAccelerator.

Para tomar mi decisión, utilicé ab (apache bench) para probar el servidor, y probé las tres combinaciones (zend, eAccelerator, ambos en ejecución) y probé que eAccelerator por sí solo dio el mayor rendimiento.

Si usted tiene el lujo del tiempo, yo recomendaría hacer similar te pruebas a ti mismo, y tomar la decisión basada en tus resultados.

 16
Author: mercutio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 17:58:05

Uso APC porque era fácil de instalar en Windows y estoy desarrollando en WAMP.

La integración de APC en PHP6 se discutió aquí: http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc

Y hay instrucciones para instalar APC en Debian Etch aquí: http://www.howtoforge.com/apc-php5-apache2-debian-etch

 5
Author: Ed Haber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 19:00:26

He ejecutado varios puntos de referencia con eAcclerator, APC, XCache y Zend Optimizer (aunque Zend es un optimizador, no una caché).

Resultados de Referencia http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

Resultado: eAccelerator es el más rápido (en todas las pruebas), seguido de XCache y APC. (El que aparece en el diagrama es el número de segundos para llamar a una página de inicio de WordPress 10.000 veces).

Zend Optimizer hizo todo más despacio.).

 5
Author: BlaM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-20 21:50:57

No puedo asegurarlo, pero el lugar donde estoy trabajando ahora es en APC y eAccelerator. Sin embargo, esto podría influir en usted - APC se integrará en una futura versión de PHP (gracias a Ed Haber por el enlace).

 4
Author: Thomas Owens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 19:01:43

He tenido un buen éxito con eAccelerator (mejora de velocidad sin carga es notable) pero XCache también parece bastante prometedor. Sin embargo, es posible que desee ejecutar algunas pruebas con cada una, su aplicación puede escalar de manera diferente en cada una.

 3
Author: Dana the Sane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 17:57:14

He estado usando XCache durante más de un año sin ningún problema.

Intenté cambiar a eAccelerator, pero terminé con un montón de fallas de segmentación (es menos indulgente con los errores). El principal beneficio de eAccelerator es que no es solo una caché de opcode, también es un optimizador.

Debe probar completamente su aplicación con cada uno de ellos para asegurarse de que no haya ningún problema, y luego usaría apachebench para probarlo bajo carga.

 1
Author: The How-To Geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 18:02:19

Estos complementos han introducido históricamente muchos errores extraños para rastrear. Estos errores pueden causar un comportamiento inconsistente que no se puede diagnosticar fácilmente porque depende del estado de la caché.

Así que yo diría:

  1. No utilice ninguno de los anteriores. Compre más tin en su lugar, es una forma más confiable (es decir, sin errores) de aumentar el rendimiento. O
  2. Ir con cualquiera de los anteriores es el más robusto, después de haber probado los pantalones de su aplicación.

Pero Yo diría:

  1. Asegúrese de que es realmente el análisis de código PHP lo que está causando sus problemas de rendimiento al perfilar su aplicación. Creo que es muy probable que no lo sea, en cuyo caso estaría perdiendo su tiempo (en realidad, usando su tiempo negativamente productivamente) instalando cualquiera de ellos.
 1
Author: MarkR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-16 21:24:12