En casa y en la agencia donde trabajo usamos como sistema operativo para los servidores Centos y como desde hace un tiempo vengo viendo el tema de monitorizar para mejorar la performance de las aplicaciones que desarrollo me decidí a probar mod_top. Esta herramienta corriendo en centos es gracias al soporte de Red Hat Enterprise Linux (RHEL) 4 o 5.
De momento mod_top solo da soporte a las siguiente versiones de PHP: 4.4x, 5.1.x, 5.2.x. Aunque piensan hacerlo además para: Perl, Ruby, Python, mySQL, Postgres, Apache1+2.
Pues bien ¿y qué se pude hacer con esta herramienta?, como ellos lo definen:
- Localizar cuellos de botella en las aplicaciones.
- Solucionar problemas gran consumo de memoria.
- Comprender el uso de la CPU con carga.
- Diagnosticar las causas de lentitud o la utilización de los recursos.
- Descubrir las dependencias de la base de datos.
- Impresionar a sus amigos con su eficiente código escalable.
Instalando mod_top
Para comenzar necesitamos descargar la versión compatible con nuestro PHP. En mi caso descargué la versión 0.5 (la última a la fecha 2008/02/14) con soporte para PHP v5.2.x y arquitectura i686. Yo suelo descargar las librerías aquí:
Descomprimimos y guardamos su contenido en /opt/mod_top:
En este caso el archivo es mod-top-0.5-php52-i686.tar.gz:
# tar -xvzf mod-top-0.5-php52-i686.tar.gz -C /opt/mod_top
Terminado esto toca instalar las librerías Lamp1701 como muestra la documentación…
lib/liblamp1701read.so - lamp1701 libraries
liblamp1701utils.so
liblamp1701write.so
liblamp1701read.so.0 - shared object name links
liblamp1701utils.so.0
liblamp1701write.so.0
… en la carpeta /usr/lib o /usr/lib64 si fuese el caso:
# ln -s /opt/mod_top/mod-top-0.5-php52-i686/lib/liblamp1701*.0 /usr/lib
Instalando la extensión en PHP
Se crea un enlace simbólico del archivo php/lamp1701.so (que en este caso está en /opt/mod_top/mod-top-0.5-php52-i686/) en la carpeta de módulos de PHP (en este caso /usr/lib/php/modules):
# ln -s /opt/mod_top/mod-top-0.5-php52-i686/php/lamp1701.so /usr/lib/php/modules
Ahora a activar la extensión en el php.ini:
Dentro del archivo agregamos:
; Enable lamp1701 extension module
extension=lamp1701.so
Ejecutando mod_top
Lo primero es iniciar lamp1701d que se encuentra en sbin/lamp1701d:
# cd /opt/mod_top/mod-top-0.5-php52-i686/sbin
Ahora ejecutar mod_top:
# cd /opt/mod_top/mod-top-0.5-php52-i686/bin
Una vez ejecutandose este proceso no podremos usar más esta terminal, si no únicamente para monitorizar.
En otra terminal
Verificamos que el proceso mod_top se esté ejecutando:
# ps aux | grep -i mod_top
root 6956 0.2 0.3 4044 2924 tty1 S+ 10:43 0:00 ./mod_top -s 127.0.0.1
root 6970 0.0 0.0 3976 744 pts/0 R+ 10:44 0:00 grep -i mod_top
Finalmente toca iniciar o reiniciar apache:
Ahora ejecuta algún proyecto que tengas en php y comenzaras a ver los resultados como se muestra aquí, sobre todo resulta interesante cuando lo usas con symfony.
Saludos.