En la aplicación en la que estoy trabajando tenemos memcached distribuido entre varias máquinas. Normalmente voy comprobando periódicamente que el tamaño usado sea menor al máximo tamaño disponible y lo teniamos configurado a 64 MB por máquina, ya que parecía suficiente.
En la traza se puede ver como tiene algo más de 40 MB (bytes) ocupados de los 64MB disponibles (limit_maxbtyes). El estado se puede consultar utilizando el método stats de la gema memcache-client o directamente haciendo un telnet al puerto donde está levantado tal y como contaba Jacobo hace unos meses en su blog:
bytes: 44140784
pid: 27269
connection_structures: 223
threads: 1
evictions: 215279
time: 1255950371
pointer_size: 32
limit_maxbytes: 67108864
cmd_get: 12315783
version: 1.2.2
bytes_written: 48564944477
cmd_set: 1505495
get_misses: 563019
total_connections: 643702
curr_connections: 61
curr_items: 15957
uptime: 9589358
get_hits: 11752764
total_items: 582809
rusage_system: 172.8108
rusage_user: 67.872241
bytes_read: 19210833034
Pero leyendo lo que significa cada uno de los parámetros de memcached en la web de escalabilidad de MySQL, me he dado cuenta de que el parámetro importante a comprobar es evictions. Eviction (que se puede traducir como desalojo), indica el número de elementos válidos de la caché borrados para liberar memoria para nuevos elementos y que debería ser cero o un número muy pequeño.
Así que hemos ampliado la memoria de memcached en todos los servidores a 128MB y efectivamente, nos habiamos quedado muy cortos.... ahora están ocupando sobre 90MB cada uno y a partir de ahora el parámetro a monitorizar es evictions :-)
Actualizacion 30/10/2009: Acabo de leer en Building Scalable Web Sites una forma alternativa de ver el status de memcached utilizando netcat. Suponiendo que está instalado en localhost en el puerto 11211
echo -ne "stats\r\n" | nc -i1 localhost 11211
Otra opción es utilizar memcache-top para ver las estadísticas en formato top (gracias a Paco por el enlace)
Actualizacion 16/10/2013: Y cuatro años despues actualizo con otra forma de consultar los stats
/usr/share/memcached/scripts/memcached-tool localhost:11211 stats
En la traza se puede ver como tiene algo más de 40 MB (bytes) ocupados de los 64MB disponibles (limit_maxbtyes). El estado se puede consultar utilizando el método stats de la gema memcache-client o directamente haciendo un telnet al puerto donde está levantado tal y como contaba Jacobo hace unos meses en su blog:
bytes: 44140784
pid: 27269
connection_structures: 223
threads: 1
evictions: 215279
time: 1255950371
pointer_size: 32
limit_maxbytes: 67108864
cmd_get: 12315783
version: 1.2.2
bytes_written: 48564944477
cmd_set: 1505495
get_misses: 563019
total_connections: 643702
curr_connections: 61
curr_items: 15957
uptime: 9589358
get_hits: 11752764
total_items: 582809
rusage_system: 172.8108
rusage_user: 67.872241
bytes_read: 19210833034
Pero leyendo lo que significa cada uno de los parámetros de memcached en la web de escalabilidad de MySQL, me he dado cuenta de que el parámetro importante a comprobar es evictions. Eviction (que se puede traducir como desalojo), indica el número de elementos válidos de la caché borrados para liberar memoria para nuevos elementos y que debería ser cero o un número muy pequeño.
Así que hemos ampliado la memoria de memcached en todos los servidores a 128MB y efectivamente, nos habiamos quedado muy cortos.... ahora están ocupando sobre 90MB cada uno y a partir de ahora el parámetro a monitorizar es evictions :-)
Actualizacion 30/10/2009: Acabo de leer en Building Scalable Web Sites una forma alternativa de ver el status de memcached utilizando netcat. Suponiendo que está instalado en localhost en el puerto 11211
echo -ne "stats\r\n" | nc -i1 localhost 11211
Otra opción es utilizar memcache-top para ver las estadísticas en formato top (gracias a Paco por el enlace)
Actualizacion 16/10/2013: Y cuatro años despues actualizo con otra forma de consultar los stats
/usr/share/memcached/scripts/memcached-tool localhost:11211 stats
Tras el cambio en cuantos evictions nos hemos quedado?
ResponderEliminarPor ahora está a cero... :-)
ResponderEliminarImplementamos memcached para http://www.decasasyautos.com.
ResponderEliminarhttp://www.decasasyautos.com es un sitio de clasificados gratis para España, Argentina y todo el mundo. El parametro Evictions de nuestro site siempre esta en 0. Es eso siempre bueno?
Javier
http://www.decasasyautos.com
Hola Javier
ResponderEliminarEs la situación ideal que esté a cero, de todas formas si el porcentaje de evictions respecto al total de peticiones (get_hits) es bajo tampoco es un problema.
Comprueba tambien el porcentaje de memoría usado (bytes respecto a limit_maxbytes) y si es muy pequeño es que estás infrautilizando memcached. En ese caso podrías cambiar la configuración para que use menos memoria o cachear más partes del site.