Utilice esta referencia para identificar la causa raíz de un evento de latencia en Redis y aplicar la solución adecuada.
Antes de comenzar
Revise estas causas comunes antes de analizar eventos específicos:
Comandos lentos. Los comandos que escanean todas las claves (por ejemplo,
KEYS) bloquean el hilo principal. Revise los registros de consultas lentas para identificarlos. Consulte Query slow query logs.Claves grandes. Las claves grandes ralentizan la expulsión y la expiración. Utilice el análisis de claves sin conexión para identificarlas. Consulte Use the offline key analysis feature.
Alto uso de memoria. Cuando la memoria ocupada supera el límite de
maxmemory, los ciclos de expulsión se ejecutan con frecuencia. Consulte Change the configurations of an instance.
Contexto
Redis 2.8.13 introdujo el monitoreo de latencia, que recopila datos de los últimos 160 segundos y registra únicamente el evento de mayor latencia por segundo.
Tair (compatible con Redis OSS) proporciona latency insights, una alternativa avanzada que registra hasta 27 eventos con las duraciones de ejecución de todos los comandos, y conserva las estadísticas de latencia de los últimos tres días. Para conocer los nombres de los eventos y sus umbrales de latencia, consulte Common special events.
Eventos comunes de latencia
Algunos eventos tienen una relación padre-hijo:
**
AofWrite** es el evento padre. Cada vez que se escriben datos en un archivo de solo anexión (AOF), Redis registraAofWritejunto con exactamente uno de tres eventos hijos:AofWriteAlone,AofWriteActiveChildoAofWritePendingFsync. Para encontrar la causa específica, analice el evento hijo.**
EvictionCycle** es el evento padre para la expulsión. AnaliceEvictionDelyEvictionLazyFreeen conjunto para determinar qué está provocando la latencia de expulsión.
|
Evento |
Qué mide |
Causa común |
Qué hacer |
|
|
Tiempo de un ciclo completo de expulsión, incluida la selección de claves, la eliminación y la espera del hilo en segundo plano |
Múltiples factores: analice |
Revise el uso de claves y optimice los datos de negocio. Si las expulsiones ocurren con frecuencia, escale la instancia para mantener el uso de memoria por debajo de |
|
|
Tiempo para eliminar claves durante un ciclo de expulsión |
Expulsión de claves grandes |
Evite las claves grandes. Habilite la expulsión asíncrona al establecer |
|
|
Tiempo de espera a que los hilos en segundo plano liberen memoria |
No hay claves expulsables disponibles mientras los hilos en segundo plano liberan memoria (por ejemplo, al eliminar claves grandes) |
Ajuste la directiva de expulsión de memoria mediante el parámetro |
|
|
Tiempo de un ciclo de expiración de claves |
Eliminación de claves grandes |
Evite las claves grandes. Habilite la expiración asíncrona al establecer |
|
|
Tiempo para eliminar claves durante un ciclo de expiración |
Eliminación de claves grandes |
Evite las claves grandes. |
|
|
Tiempo total para escribir datos en archivos AOF |
Múltiples factores: analice |
Si no se requiere persistencia de datos, deshabilite AOF al establecer |
|
|
Tiempo de una escritura AOF sin procesos hijos simultáneos ni fsync pendientes |
Gran volumen de escritura o cuellos de botella en el rendimiento del disco |
Si no se requiere AOF, establezca |
|
|
Tiempo de una escritura AOF mientras los procesos hijos también escriben en el disco |
E/S de disco de procesos hijos que compite con las escrituras AOF |
Si no se requiere AOF, establezca |
|
|
Tiempo de una escritura AOF mientras hay un fsync en segundo plano en progreso |
Fsync en segundo plano que compite con las escrituras AOF |
Si no se requiere AOF, establezca |
|
|
Tiempo de comandos regulares (no etiquetados como rápidos) |
Comandos que recorren todos los datos, como |
Revise los registros de consultas lentas para encontrar comandos de larga duración. Utilice el análisis de claves sin conexión para comprobar si existen claves grandes. |
|
|
Tiempo de comandos rápidos con complejidad O(1) u O(log N) |
Comandos rápidos que copian grandes cantidades de datos (por ejemplo, |
Identifique y divida las claves grandes. Consulte Identify and handle large keys and hotkeys. |
|
|
Tiempo para llamar a |
Reescrituras de AOF |
Si no se requiere persistencia de datos, deshabilite AOF al establecer |