2011-06-23 13 views
7

Actualmente estoy probando la inserción de claves en una base de datos Redis (en local). Tengo más de 5 millones de claves y solo tengo 4GB de RAM, así que en un momento alcanzo la capacidad de RAM y canjeo (y mi PC se cae) ...Redis: uso de la memoria de supervisión

Mi problema: ¿Cómo puedo hacer que la memoria de monitoreo uso en la máquina que tiene la base de datos Redis, y de esta manera alerta no más insertar algunas claves en la base de datos Redis?

Gracias.

Respuesta

4

cuanto a uso de memoria, yo le aconsejo que mirar el redis.io FAQ y este artículo sobre using redis as a LRU cache.

Puede limitar el uso de memoria a través de la configuración de configuración maxmemory, en cuyo caso una vez que se alcanza el límite de memoria, todas las solicitudes de escritura fallarán con un error o podría establecer maxmemory-policy a allkeys-lru, por ejemplo , para comenzar a sobrescribir los datos utilizados menos recientemente en el servidor con las cosas que necesita actualmente, etc. Para la mayoría de los casos de uso, tiene suficiente flexibilidad para manejar dichos problemas a través de la configuración adecuada.

Mi consejo es mantener las cosas simples y gestionar este problema a través de la configuración del servidor redis en lugar de introducir una complejidad adicional a través de la supervisión del nivel de os o similar.

+0

Gracias. Veré las diferentes soluciones, particularmente usando el artículo sobre el uso de redis como un caché LRU (no lo he visto antes) – kozher

4

Hay una buena utilidad de Unix llamada vmstat. Es como la línea superior pero de comando, por lo que puede obtener el uso de memoria y estar preparado antes de detener su sistema. También puede usar ps v PID para obtener esta información sobre el proceso específico. PID de Redis se puede recuperar de esta manera: pidof redis-server

1

La memoria es un recurso fundamental para el rendimiento de Redis. La memoria utilizada define la cantidad total de bytes asignados por Redis utilizando su asignador (ya sea libc estándar, jemalloc o un asignador alternativo como tcmalloc).

Puede recopilar todos los datos de métricas de utilización de memoria para una instancia de Redis ejecutando "memoria de información".

 
127.0.0.1:6379> info memory 
Memory 
used_memory:1007280 
used_memory_human:983.67K 
used_memory_rss:2002944 
used_memory_rss_human:1.91M 
used_memory_peak:1008128 
used_memory_peak_human:984.50K 

A veces, cuando Redis está configurado sin límite máximo de memoria, uso de memoria finalmente alcanzará la memoria del sistema, y ​​el servidor comenzará a lanzar “sin memoria” errores. En otros momentos, Redis está configurado con un límite máximo de memoria pero sin política de prevención. Esto haría que el servidor no desalojara ninguna clave, evitando así cualquier escritura hasta que se libere la memoria. La solución a tales problemas sería configurar Redis con memoria máxima y alguna política de desalojo. En este caso, el servidor comienza a desalojar las claves mediante la política de desalojo, ya que el uso de memoria alcanza el máximo.

Memoria RSS (Tamaño del conjunto residente) es el número de bytes que el sistema operativo ha asignado a Redis. Si la relación de 'memory_rss' a 'memory_used' es mayor que ~ 1.5, significa fragmentación de memoria. La memoria fragmentada se puede recuperar reiniciando el servidor.

Lea la descripción más detallada para supervisar el servidor redis here

Cuestiones relacionadas