las - php short tags
¿Qué calculador de código de operación de PHP debería usar para mejorar el rendimiento? (7)
Estoy tratando de mejorar el rendimiento con mucha carga y me gustaría implementar el almacenamiento en caché de código de operación. ¿Cuál de los siguientes debería usar?
- APC - Guía de instalación
- eAccelerator - Guía de instalación
- XCache - Guía de instalación
También estoy abierto a cualquier otra alternativa que se haya deslizado bajo mi radar.
Actualmente se ejecuta en un stock Debian Etch con Apache 2 y PHP 5.2
[Actualización 1]
Enlaces de instalación de HowtoForge añadidos
[Actualización 2]
En base a las respuestas y los comentarios recibidos, probé las 3 implementaciones utilizando el siguiente plan de prueba de Apache JMeter en mi aplicación:
- Iniciar sesión
- Página de inicio de acceso
Con 50 conexiones simultáneas, los resultados son los siguientes:
Sin caché de código de operación
APC
eAccelerator
XCache
Gráfico de rendimiento (más pequeño es mejor)
A partir de los resultados anteriores, eAccelerator tiene una ligera ventaja en rendimiento en comparación con APC y XCache. Sin embargo, lo más importante de los datos anteriores es que cualquier tipo de almacenamiento en caché de código de operación da un impulso tremendo en el rendimiento.
He decidido usar APC debido a las 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
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 pude decidir entre Zend Optimizer y eAccelerator.
Para tomar una decisión, utilicé ab (apache bench) para probar el servidor, y probé las tres combinaciones (zend, eaccelerator, ambas en ejecución) y probé que eAccelerator por sí solo daba el mejor rendimiento.
Si tiene el lujo del tiempo, le recomendaría hacer pruebas similares y tomar una decisión basada en sus resultados.
Estos complementos han introducido históricamente muchos errores extraños para rastrear. Estos errores pueden causar un comportamiento incoherente que no se puede diagnosticar fácilmente porque depende del estado de la memoria caché.
Entonces yo diría:
- No use ninguno de los anteriores. Compre más estaño en cambio, es una manera más confiable (es decir, sin errores) de aumentar el rendimiento. O
- Vaya 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:
- Asegúrese de que REALMENTE esté analizando el código PHP que está causando sus problemas de rendimiento mediante el perfil de su aplicación. Creo que es muy probable que no lo sea, en cuyo caso estarías perdiendo el tiempo (en realidad, utilizando tu tiempo de forma negativa y productiva) al instalar cualquiera de ellos.
He ejecutado varios benchmarks con eAcclerator, APC, XCache y Zend Optimizer (aunque Zend es un optimizador, no un caché).
Resultado: eAccelerator es el más rápido (en todas las pruebas), seguido de XCache y APC. (El que está en el diagrama es la cantidad de segundos para llamar a una página de inicio de WordPress 10,000 veces).
Zend Optimizer hizo todo más lento (!).
He estado usando XCache por más de un año sin problemas.
Traté de cambiar a eAccelerator, pero terminé con un montón de fallas de segmentación (es menos tolerante con los errores). El principal beneficio de eAccelerator es que no es solo un caché de opcode, sino también un optimizador.
Debería 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.
He tenido éxito con eAccelerator (la mejora de velocidad sin carga es notable) pero XCache también parece bastante prometedor. Es posible que desee ejecutar algunos ensayos con cada uno, su aplicación puede escalar de manera diferente en cada uno.
No puedo decirlo con certeza, pero el lugar donde estoy trabajando ahora es mirar a APC y eAccelerator. Sin embargo, esto podría influir en usted: http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc (gracias a Ed Haber por el enlace).
Uso APC porque fue 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