Hace aproximadamente 15 días, en un fin de semana que tenia un poco de tiempo libre me decidí a jugar un poco con el VPS donde se aloja Kabytes, principalmente probando distintas configuraciones para optimizarlo ya que últimamente WordPress estaba consumiendo todos los recursos.
La cuestión es que por mas pruebas que hice cambiando la configuración de MySQL y de Apache los resultados eran muy similares a los obtenidos en pruebas pasadas, hasta que recordé que hacia un tiempo, y para otro proyecto, había instalado una cache de scripts PHP, para ser mas preciso eAccelerator.
¿Como funciona eAccelerator?
Todo programador sabe (o debería saber) la diferencia entre un lenguaje compilado y uno interpretado. PHP es un justamente un lenguaje interpretado, eso significa que por cada ejecución esta se interpreta, creando una estructura de datos que posteriormente se ejecuta.
Este proceso como se imaginaran es bastante costoso y lento a comparación del realizado por un lenguaje compilado. Quizás este sea unos de los puntos débiles de PHP.
Finalmente tenemos este problema, y es justamente donde entra eAccelerator. Este maravilloso proyecto lo que hace es crear una cache de todos nuestros scripts en PHP, evitando que cada uno de estos tenga que interpretarse por cada ejecución, ahorrando recursos y ganando mucha velocidad.
Lo que esta muy bien de este acelerador es que no requiere acción alguna de nosotros luego de la instalación.
Muchos se estarán preguntando ¿que pasa si un archivo PHP es modificado? la respuesta es simple, nada, eAccelerator detecta la fecha de modificado de un archivo y sobreescribe la cache por la mas reciente. Mas simple imposible.
¿El resultado de instalar eAccelerator con WordPress?
Impresionante, WordPress instalado sin casi utilizar plugin estaba consumiendo 14mb de ram aproximadamente (con picos de casi 20mb), luego de instalar eAccelarator solo 4.48mb.
Instalación de eAccelerator
La instalación fue bastante simple y no necesito mas que algunos comandos desde consola, aunque recomiendo que sigan alguna guía exactamente para la versión de sistema operativo instalado en su servidor, les dejo la que hice yo y funciono la perfección, con la configuración sugerida por PHP.ph en CentOS 5.
yum install php-devel yum groupinstall 'Development Tools'
Cambiamos de directorio, bajamos los archivos e instalamos
cd /tmp wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2 tar xvfj eaccelerator-0.9.5.2.tar.bz2 cd eaccelerator-0.9.5.2 Phpize. phpize ./configure Install it. make make install
Creamos un archivo de configuración
vi /etc/php.d/eaccelerator.ini [Enter] extension="eaccelerator.so" eaccelerator.shm_size="0" eaccelerator.cache_dir="/var/cache/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
Creamos un directorio donde se va a guardar la cache de scripts y le damos permisos. Finalmente reiniciamos el Apache.
mkdir -p /var/cache/eaccelerator chmod 0777 /var/cache/eaccelerator /etc/init.d/httpd restart
Si todo salió bien vamos a tener instalada y funcionando correctamente la extensión de eAccelerator en nuestro servidor. Para probarlo podemos crear un archivo .php con este contenido.
<?php phpinfo(); ?>
Ejecutarlo en cualquier dominio y ver si la extensión aparece instalada. Otra opción, y mas fácil de ver si esta funcionando, es instalar el plugin para WP TPC Memory usage, que es el del screenshot y verificar en las opciones dentro de la lista de extensiones instaladas si se encuentra la de eAccelerator.
Nota: Buscando mas información sobre eAccelerator y WordPress veo que Andrés en Anieto2k comenta que utilizando Zend Optimizer los resultados pueden ser aún más impresionantes. Será cuestión de probar 😀
Plugin de WordPress para activar eAccelerator
Ahora si no tenes acceso a ssh y no hay forma de modificar la configuración de tu servidor hay una alternativa. Instalar un plugin que activa por nosotros las ventajas de eAccelerator.
Ademas del plugin de eAccelerator en Neosmart nos permiten descargar otro que activa XCache, que hace prácticamente lo mismo, esta ultima alternativa para crear cache PHP es muy similar y aunque no los probé leí en varios lados que es igual de buena. Si alguno tiene ganas y tiempo puede hacer la prueba a ver cual funciona mejor.
Los plugins por lo que leí estan en una etapa muy experimental, asi que es cuestión de hacer la prueba y ver si funciona y que tal es el rendimiento en nuestro servidor. Por favor si alguien lo hace avise en los comentarios 😀
Francisco
15 años ago
Bastante ilustrativa la prueba.
Por cierto, el plugin w3 total cache tiene soporte para eaccelerator y pueden complementarse muy bien.
Pablo
15 años ago
@Francisco: Excelente consejo, voy a instalarlo el fin de semana y hacer pruebas! gracias 😀
Brian.ERC
15 años ago
A mi me queda una duda, esto afectaría los códigos javascript? por ejemplo sistemas de publicidad como HotWords / infolinks ? o sistemas como Analytics?
El plugin para WP es tan efectivo como instalarlo en el servidor? 😛
Se feliz! 😀
Pablo
15 años ago
@Brian.ERC: Te comento, esto no afecta en lo mas minimos a javascript por lo que los sistemas de publicidad ni ningun otra cosa se veria modificado y podrias usarlo sin problemas 😀
El plugin de WP no lo pude probar yo, pero en teoria hace lo mismo que la instalacion del lado servidor por lo que seria practicamente igual, y no digo exactamente igual porque no vas a poder configurarlo tan al detalle como si escribieras vos mismo el archivo de configuracion.
Saludos!
Dynn
15 años ago
Pero esto serial algo como WP Super cache? de no serlo, podrian funcionar juntos?
Pablo
15 años ago
@Dynn: Esto no es como el wp-super cache, porque esto cache los scripts php, a diferencia del supercache crea una copia estatica de la ejecucion final, y respondiendo a tu segunda pregunta si, y perfectamente, en mi caso utilizo wp cache sin ningun problema 😀
Dynn
15 años ago
Pablo una pregunta, ya hice lo de los comandos en consola, pero ahora como instalo el Plugin, lo descargue y lo subi a la carpeta correspondiente de plugins en WordPress, pero este ni me lo detecta en el panel, por lo tanto no lo he podido instalar.
Saludos!
Mazcue
15 años ago
Gracias, puede ser una solución para nosotros. Ya se lo estoy pasando a mi programador (fazcue) 😉
Abrazo.
Pablo
15 años ago
@Mazcue: Dale buenisimo, es interesante usarlo te digo a mi me salvo de actualizar el VPS dos planes para arriba, asi que funcionar funciona, aunque siempre hay que ver cada caso en particular 😀
Cualquier cosa avisame!
Pablo
15 años ago
@Dynn: Si lo hiciste por consola no necesitas el plugin, el plugin es para el que no tiene la posibilidad de instalar eAccelerator directamente en el server, ya con lo que hiciste deberia funcionar 😀
Linux Hispano | Lo mejor de mi RSS del 15 al 21 de marzo
15 años ago
[…] Reducir el consumo de RAM de WordPress con eAccelerator – Kabytes […]
j0an
15 años ago
estoy probando instalar esto en un VPS con CentOS 5 y en la linea de Phpize. me da
-bash: Phpize.: command not found
y en la siguiente
root@vps [/tmp/eaccelerator-0.9.5.2]# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
/usr/local/bin/phpize: /tmp/eaccelerator-0.9.5.2/build/shtool: /bin/sh: bad interpreter: Permission denied
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
alguna mano por aqui?
Pablo
15 años ago
@j0an: Fijate con el comando «whereis phpize» ese te tendria que devolver la ruta donde esta instalado, seguramente en tu vps las herramientas de desarrollo estan metidas en algun directorio, en base al resultado ejecuta exactamente la misma linea pero añadiendo la ruta 😀
Avisame!
j0an
15 años ago
root@vps [~]# whereis phpize
phpize: /usr/bin/phpize /usr/local/bin/phpize /usr/man/man1/phpize.1
ejecuto
root@vps [~]# /usr/bin/phpize
Cannot find config.m4.
Make sure that you run ‘/usr/bin/phpize’ in the top level source directory of the module
Pablo
15 años ago
j0an: Proba lo siguiente, una vez que descomprimiste el eaccelerator y entraste a esa carpeta:
export PHP_PREFIX=”/usr”
$PHP_PREFIX/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config
make
make install
Si funciona directamente saltas a la creacion del .ini y de ahi en adelante no deberia joder 😀
Avisame
j0an
15 años ago
en el .configure…
configure: error: invalid variable name: –enable-eaccelerator
FUUUUUUUU
Pablo
15 años ago
j0an: jajaja, que raro che, podes probar tambien solo usando
./configure –enable-eaccelerator
Ahi solo con eso también tendria que funcionar y despues hacer el make sin dramas!
Avisa 😀
j0an
15 años ago
esto de no saber que esta haciendo uno.. y que de errores por todos lados…
desisto por el momento, dsp intento nuevamente
Gustavo
15 años ago
Hola,
Antes de nada perdonad que soy muy novato.
Estoy intentando instalarlo, y todo va correcto hasta que hay que crear vi /etc/php.d/eaccelerator.ini [Enter]
Ahí me aparecen unos espacios en los que puedo incluir
extension=»eaccelerator.so»
eaccelerator.shm_size=»0″
eaccelerator.cache_dir=»/var/cache/eaccelerator»
eaccelerator.enable=»1″
eaccelerator.optimizer=»1″
eaccelerator.check_mtime=»1″
eaccelerator.debug=»0″
eaccelerator.filter=»»
eaccelerator.shm_max=»0″
eaccelerator.shm_ttl=»0″
eaccelerator.shm_prune_period=»0″
eaccelerator.shm_only=»0″
eaccelerator.compress=»1″
eaccelerator.compress_level=»9″
Pero despues me aparece –INSERT– y no puedo continuar con la instalación.
Me podeis indicar como continuo??
Gracias
Pablo
15 años ago
@Hola Gustavo!
Te cuento para poder insertar se utilizan los comandos basicos de vi http://es.wikipedia.org/wiki/Vi
Espero que sean de tu utilidad 😀
Gustavo
15 años ago
Gracias Pablo!
Ya puedo salir de ello, y el caso es que creia haberlo logrado pero no…
El caso es que despues de make install me sale
Installing shared extensions: /usr/lib64/php/modules/
Puede tener algo que ver, estoy creando la ruta del archivo de forma erronea?
Disculpa pero es que estoy haciendo mis primeros pinitos en esto como podras ver 😉
W3 Total Cache, el plugin más completo para cache en WordPress | Blog and Web
15 años ago
[…] opción de CDN en Self-hosted para transferir todo el contenido estático a un dominio nuevo y la instalación de eAccelerator en el servidor.ConclusiónW3 Total Cache presume de ser usado en varios de los blogs más populares […]
Jose Maria
15 años ago
El problema es que, al menos con la ultima version de Eaccelerator, no se puede activar en W3 Total Cache.
¿Alguien tiene un fix para esto?
Un saludo.
Plaga
15 años ago
Disculpa una pregunta como le haces para ver esta sección (http://www.kabytes.com/wp-content/uploads/2010/03/consumo-ram-wordpress.png) del plugin TPC! Memory Usage en que parte esta? porque no lo encuentro :S
Salu2 y gracias.
Plaga
15 años ago
Hahahahaa olvidalo XD ya vi, nunca se me ocurrio ver en el escritorio XD
Mi última pesadilla: Optimizar el VPS para Wordpress
14 años ago
[…] Reducir el consumo de RAM de WordPress con eAccelerator […]
Blog Adictos » W3 Total Cache, el plugin más completo para cache en WordPress
14 años ago
[…] opción de CDN en Self-hosted para transferir todo el contenido estático a un dominio nuevo y la instalación de eAccelerator en el […]
El enemigo en común que comparten Flash y PHP | Kabytes
14 años ago
[…] existen distintos tipos de alternativas para agilizar el proceso, por ejemplo la instalación de eAccelerator. Ademas de que muchas veces esta diferencia termina siendo un punto a favor del lenguaje al no […]
– El enemigo de Flash y php
14 años ago
[…] existen distintos tipos de alternativas para agilizar el proceso, por ejemplo la instalación de eAccelerator. Ademas de que muchas veces esta diferencia termina siendo un punto a favor del lenguaje al no […]
pfd
14 años ago
Hola,
Estoy intentando subirlo, pero me quedo bloqueado con phpize. El comando no esta cargado y no consigo subirlo. ¿He provado subiendo php5-dev, pero no me aclaro.
Alguien puede orientarme paso a paso?
Gracias
Cómo optimizar el rendimiento de WordPress | ceslava - Diseño y Formación
14 años ago
[…] WordPress, para que gaste pocos recursosAcelera WordPress definiendo llamadas a funcionesReducir el consumo de RAM de WordPress con eAcceleratorEn inglés13 Great WordPress Speed Tips & Tricks for MAX PerformanceWordPress Optimization […]
paintball madrid
13 años ago
Gracias chicos…..tenia muchas dudas.
Adrian
13 años ago
Esta muy completo tu post, tenia un sitio web con joomla y aparte wordpress y si se saturaba fácilmente el servidor con tanto proceso, gracias.
Jose
13 años ago
Pues menos mal que se puede activar por pluggin, porque yo no tengo acceso a la consola y me parece algo muy interesante. En un rato lo pruebo.
Gracias por la info