Árvore de páginas

 

Herramienta

Existen diversas herramientas de monitoreo de memcached disponibles en el mercado, como el phpMemcachedAdmin, el memcache-top, el statsproxy, además del propio console del memcahced accedido por telnet. Utilizaremos phpMemcachedAdmin como herramienta de monitoreo, este posee una interfaz web simple y fácil de utilizar, también enumeraremos algunos puntos que se deben monitorear y soluciones de problemas.

Guía de instalación del phpMemcachedAdmin

phpMemcachedAdmin se debe bajar en el sitio  https://code.google.com/p/phpmemcacheadmin/ , él es un script simple en php y como tal se debe ejecutar en un servidor http que tenga suporte a php.

La última versión hasta la fecha en que esa guía se escribió es la 1.2.2-r262 que se puede obtener en el link: http://phpmemcacheadmin.googlecode.com/files/phpMemcachedAdmin-1.2.2-r262.tar.gz

siguiendo las instrucciones del sitio debemos descomprimir el paquete, dar permiso de ejecución a los scripts y permiso de escritura en el archivo de configuración de los servidores y en la carpeta en que se generan los informes

 

en la carpeta raíz de su servidor ej: /var/www/

mkdir phpMemcachedAdmin

cd phpMemcachedAdmin

wget http://phpmemcacheadmin.googlecode.com/files/phpMemcachedAdmin-1.2.2-r262.tar.gz

tar -xvzf phpMemcachedAdmin-1.2.2-r262.tar.gz

chmod +rx *

chmod 0777 Config/Memcache.php

chmod 0777 Temp/

Cómo configurar

Apuntar el navegador hacia la instalación de phpMemcahedAdmin en su servidor, en este caso nuestra instalación está enhttp://localhost/phpMemcachedAdmin.

 

 

Inicialmente el monitorizador ya viene configurado para conectarse a un memcached local en la máquina en que se instaló, en caso de que el memcached esté instalado en otro lugar debemos acceder al link "Edit Configuration" localizado en la esquina superior derecha que direccionará hacia la página a seguir.

 

En esta pantalla es posible monitorizar varias instalaciones de memcached, para nuestra configuración sólo vamos a editar la dirección del servidor y el puerto, recordando que el puerto estándar es el 11211, después de guardar las modificaciones ya podemos seguir las páginas de monitorización haciendo clic en "See Live Stats" o "See Stats for"  más la selección del servidor en el combo siguiente.

En el caso en que las configuraciones presenten algún problema, usted visualizará la página a continuación, en el caso de que eso ocurra verifique si el memcached está funcionando y es accesible desde el servidor en que el phpMemcached se instaló, una manera de verificar eso es haciendo un telnet en la dirección del memcached en el puerto 11211.

Puntos de atención que se deben monitorizar y soluciones

 

En el gráfico "Cache Size Graphic" tenemos una clara indicación del tamaño de la memoria asignada para este versus el consumo y el desperdicio de memoria. TOTVS Fluig Plataforma se diseño de tal manera que nunca expire un registro que está en el cache, pero un alto consumo de memoria puede hacer que el memcached de forma voluntaria expurgue los registros más antiguos haciendo que los usuarios pierdan ciertos permisos, ese comportamiento se evidencia en la cantidad de "Evictions" que el sistema está haciendo.

El memcached fue diseñado para trabajar con bloques de 1 mega como estándar, esos bloques reciben el nombre de Slab y agrupan registros de tamaños similares. Cuando solicitamos a memcached que guarde un registro, se realiza un cálculo para saber en Slab si se va a ingresar, si Slab está lleno, se creará una nueva página.  En el ejemplo a seguir, Slab 1 guarda informaciones del tamaño de 96 bytes, como el tamaño de la página de Slab se parametrizó para 5 megas en una cuenta aproximada (1024*1024*5) / 96 = 54613, llegamos a la conclusión que ese Slab tiene capacidad para 54613 registros, en el caso que se ingrese un registro más, memcached creará una nueva página para ese Slab.

Existen situaciones, como en la Totvs, en que podemos tener grupos con más de 100 mil usuarios y que acaban generando registros mayores que lo soportado por estándar, para esos casos, debemos parametrizar el memcached para trabajar con Slabs mayores modificando el parámetro  -I ( I de Iglesia).

 

 

En el ejemplo a seguir, la configuración del tamaño de la página del slab fue de 5 megas, ese número es relativamente elevado y acaba generando un gran desperdicio de memoria, podemos verificar en el ejemplo a seguir que el tamaño máximo de registro es de 1.8 megas, de este modo, podemos tener una configuración más asertiva y con un menor desperdicio si el parámetro fuese próximo de los 2 megas

El desperdicio ocurre cuando se crea una página en slab, toda la memoria configurada es asignada, en el caso de 5 megas, si esa página no recibe ninguno más o pocos registros, toda esa área va a quedar subutilizada.

 

 

Cómo corregir.

Las parametrizaciones de memcached es una matemática que estamos descubriendo poco a poco, hoy ya sabemos que el entorno de Totvs necesita una configuración de tamaño de página de Slab mayor que el estándar y así hay un consumo mayor de memoria, las configuraciones son -m512 -i5m , es decir, estamos asignando 512 megas de memoria y 5 megas para las página de Slab.

Se pueden obtener mayores informaciones sobre las opciones de parametrización en los sitios de memcached y en ese sitio con la descripción de los parámetros http://linux.die.net/man/1/memcached