eAccelerator Tunning de Apache / PHP
eAccelerator es un acelerador y optimizador de PHP de código libre. Incrementa el desempeño de los script de PHP cacheandolos en un estado compilado, lo que evita que se tenga que recompilar (o interpretar) cada vez que es consumido. También optimiza los scripts para mejorar el tiempo de ejecución. eAccelerator reduce la carga del servidor e incrementa la velocidad del código PHP en una relación de 1-10.
eAccelerato nación en Diciembre del 2004 como un frok del proyecto MMCache. MMCache fue creado por Dmitry Stogov y gran parte de eAccelerator sigue estándo basado en ese trabajo.
eAccelerato almacena en código PHP compilado en memory y lo ejecuta directamente de esta misma. Genera un lock al archivo por pequeños períodos de tiempo, cuando busca el script PHP compilado en el cache, lo que permite que el script pueda ser consumido por distintos motores al mismo tiempo. Los archivos que por su tamaño no puedan ser almacenados en memoria, son almacenados en disco.
La última versión en la 0.9.6 que soporta php 5.3, 5.2 y 5.1
Procedimiento:
eAccelerator no esta disponible como paquete para Ubuntu. No soy muy fanático de instalar componentes externos, pero en este caso se justificaba ya que tenía un servidor que con php-xcache (un paquete para mejorar el desempeño de php) no era suficiente para soportar la carga que tenía.
Como se va tener que compilar el código descargado de la página del proyecto se va a necesitar los paquetes para desarrollo de aplicaciones, la fuente de php y el wget para descargar el archivo por consola.
También se actualizar los componentes del servidor para minimizar la probabilidad de algún inconveniente.
< apt-get update
< apt-get upgrade
< apt-get install build-essential php5-dev wget
El siguiente paso es ir a la página del proyecto (http://www.eaccelerator.net/) y descargar la última versión estable del componente.
En este caso es la 0.9.6 y el link de descarga 'http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2'. La descarga se realizará en el '/tmp'.
< cd /tmp
< wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
Para descomprimir la aplicación primero se debe ingresar al /usr/local/src (donde se deben compilar las aplicaciones de 3ros).
< cd /usr/local/src/
A continuación se procede a descomprimir el archivo e ingresar al directorio que genera con el código fuente de la aplicación.
< sudo tar -xjf /tmp/eaccelerator-0.9.6.tar.bz2
< cd eaccelerator-0.9.6/
Primero se debe preparar la extensión de PHP para compilarla, esto se realiza con el comando 'phpize'.
< sudo phpize
El siguiente paso es preparar el archivo de configuración de la extensión para luego proceder a compilar el código.
< sudo ./configure --enable-eaccelerator \
--with-php-config=/usr/bin/php-config
< sudo make
Si durante el proceso de compilación no aparece ningún error (no debería si se actualizó el servidor y se instalaron las dependencias) se debe proceder a instalar la aplicación que se compilo en el paso anterior. Se debe prestar atención a la salida de este comando que informa la ruta donde se encuentra la extención.
< sudo make install
> Installing shared extensions: /usr/lib/php5/20060613+lfs/
Para configurar y habilitar eAccelerator se debe crear un archivo de configuración 'eAccelerator.ini' en el directorio '/etc/php5/conf.d/'
< sudo nano /etc/php5/conf.d/eAccelerator.ini
con el siguiente contenido:
; Path a la ruta de la extención compilada
zend_extension = /usr/lib/php5/20060613+lfs/eaccelerator.so
; Memoria asignada a eAccelerator, 0 es el valor por defecto 32Mb
eaccelerator.shm_size = 0
; Ruta al directorio donde aloja los elementos
eaccelerator.cache_dir = /var/www/eaccelerator
; Habilita la extensión
eaccelerator.enable = 1
; Habilita la optimización
eaccelerator.optimizer = 1
; Habilita la verificación de modificación de script por tiempo
eaccelerator.check_mtime = 1
; Habilita el modo debug
eaccelerator.debug = 0
; Deshabilita el uso de cache de scripts en disco por eAccelerator .
eaccelerator.shm_only = 0
; Comprime los scripts en memoria
eaccelerator.compress = 1
; Nivel de compresión a utilizar, donde 9 es el máximo.
eaccelerator.compress_level = 9
; Ruta del panel de control
eaccelerator.allowed_admin_path = /var/www/control.php
A continuación se debe crear y asignarle permisos al directorio donde trabajará eAccelerator
< sudo mkdir /var/www/eaccelerator
< sudo chown root:www-data /var/www/eaccelerator
< sudo chmod u=rwx,g=rwx,o= /var/www/eaccelerator
Se debe copiar el archivo control.php a la ruta que se definió en el archivo de configuración.
< cp /usr/local/src/eaccelerator-0.9.6/control.php /var/www/
Se debe modificar el usuario y contraseña de adminitración del eAccelerator. Esto se hace editando las líneas
/*** CONFIG ***/
$auth = true; // Set to false to disable authentication
$user = "superadmin";
$pw = "ultrasecreto";
Finalizado este último paso se debe proceder a recargar la configuración del apache.
< sudo /etc/init.d/apache2 reload
Observación:
Si se necesita asignar más de 32mb al cache del eAccelerator (eaccelerator.shm_size) se debe modificar el parámetro "shmmax" (tamaño máximo del segmento de memoria compartida) en el kernel del equipo.
< sudo echo 'valor' > /proc/sys/kernel/shmmax67108864
Donde valor se le asigna el valor según la siguiente tabla (en naranja el valor por defecto):
Cache de 32mb -> 33554432
Cache de 64mb -> 67108864
Cache de 128mb -> 134217728
Cache de 256mb -> 268435456
Para que el cambio sea permanente al reiniciar el equipo, se debe agregar las siguientes líneas de configuración al archivo /etc/sysctl.conf
# Apache Tunning
# eAccelerator
kernel.shmmax = 134217728
- Inicie sesión o regístrese para enviar comentarios
