18 junio, 2011 3 min to read

PHP – Optimizaciones en el servidor.

Category : Desarrollo Web, Linux

Crystal_Clear_mimetype_phpEl número de clientes alojados en nuestros servidores está creciendo, así que debemos poder responder a este incremento y optimizar los recursos con que contamos, es decir mejorar la respuesta de nuestros servidores frente al número de peticiones que tenemos día a día.

El escenario:

Un servidor optimizado par ejecutar código php y nada más, en nuestro caso es cierto, ya que alojamos únicamente proyectos Joomla y WordPress, así podemos garantizar que el servidor está optimizado para la ejecución de estas aplicaciones. Ahora Joomla y WordPress generalmente no están solas y los usuarios tienden a instalar un buen número de aplicaciones adicionales (componentes, plugins, etc.…), así que decir que está optimizado para estos dos CMS es garantizar su optimización para amplio universo de aplicaciones php.

Sobre cada Web se pueden realizar optimizaciones puntuales, como habilitar el cache, esto en Joomla se consigue de forma simple, pues es una funcionalidad del core, en WordPress podemos ayudarnos con supercache, sin embargo esto no es suficiente por dos razones:

  • La principal: los usuarios pueden deshabilitarla a gusto cuando lo prefieran
  • La segunda: Necesitas cachear más que los resultados, necesitas cachear los scripts de ejecución en bitcode para que sean más rápidos, es decir requieres un “opcode cache”

He probado múltiples optimizadores, pero me he decantado por eaccelerator que probablemente se ajusta mejor que cualquier otro a mis necesidades, es simple, “cachea” que es lo que necesito y acelera los sitios hasta en 110ms por petición lo cual es una gran ganancia, de 10 peticiones, consigues un maravilloso segundo, en un escenario concurrido habrás conseguido unos 11segundos de proceso y eso no tiene precio.

Su instalación es realmente simple, vasta con descargar http://eaccelerator.net/wiki/Release-0.9.6.1 , descomprimir y compilar, en CentOS es realmente simple, empieza con instalar php-devel :


yum install php-devel
yum groupinstall 'Development Tools' #probablemente lo necesites si no haz compilado nada antes
cd a_tu_carpeta_de_eac
phpize
./configure
make
make install
#luego agregar tu archivo eac.ini a /etc/php.d/ con un contenido similar a este:
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"

#Creas la carpeta /var/cache/eaccelerator y probablemente quieras darle permisos 0777

Otra optimización recomendada por muchos es ZendOptimizer, personalmente tengo un retraso de unos 20ms cuando activo esta extensión, pero se ve reducido el % de procesamiento utilizado para cada script, es aparentemente contradictorio, pero resulta funcional, ya que por ejemplo, al ejecutar un script tarda +/- lo mismo que si no lo activara, pero la carga de procesamiento cae, lo que me permite la ejecución de multiples script con menor uso de CPU.

Su instalación es muchisimo más simple que la de la anterior extensión, es solo descargar desde http://www.zend.com/en/products/guard/downloads , descomprimir y copiar en tu carpeta de extensiones php, luego agregar un archivo .ini con es decir:


cp ZendOptimizer-3.3.9-linux-glibc23-i386/data/ZendOptimizer.so /usr/lib/php/modules/ZendOptimizer.so
echo zend_extension="/usr/lib/php/modules/ZendOptimizer.so" >/etc/php.d/zendoptimizer.ini

  

Por último está IonCube Loader, en realidad no es una optimización, más bien una ralentización, sin embargo es necesaria para permitir a tus usuarios ejecutar código encriptado muy común ahora en diversas extensiones joomla y aplicaciones php en general. (se instala = a ZendOptimizer, solo que descargas desde http://www.ioncube.com/loaders.php)