Latencia del cliente
Redis viene con una arquitectura de cliente cliente. En algunos casos, varios clientes pueden intentar conectarse al servidor Redis simultáneamente. Dado que Redis es un solo hilo, esto presentará una cola de cliente donde el servidor sirve a un proceso de cliente en un momento determinado. Por lo tanto, surgió la latencia de concurrencia. Por lo tanto, los clientes sucesivos pueden necesitar esperar.
Latencia de comando
Cada comando lleva algún tiempo ejecutar. Puede variar de microsegundos a segundos. Por lo tanto, se ha identificado como una fuente de latencia. La mayoría de los comandos de Redis toman complejidad de tiempo constante o logarítmica. Al mismo tiempo, algunos comandos toman o (n) complejidad del tiempo. Son considerablemente más lentos.
Latencia de ida y vuelta
El viaje de ida y vuelta es el tiempo que lleva obtener una respuesta del servidor Redis después de que se haya ejecutado un comando en el lado del cliente. Puede haber diferentes causas para la latencia de ida y vuelta, como la lentitud de la red, las operaciones de la bifurcación y la paginación del sistema operativo.
Monitoreo de latencia de Redis
Las aplicaciones en tiempo real usan Redis, donde el rendimiento es crucial. Por lo tanto, es gratificante tener información sobre la latencia de Redis que serán útiles para tomar medidas por adelantado. De la versión 2.8.13, Redis ha agregado el componente de monitoreo de latencia a su caja de herramientas. Este componente es capaz de registrar picos de latencia por evento o ruta de código específica.
Eventos de latencia o rutas de código
Los eventos de latencia (rutas de código) no son más que las operaciones genéricas o específicas realizadas por REDIS, como comandos genéricos, llamadas al sistema de horquilla y sistemas Unlink. Cuando se trata de los comandos genéricos, hay dos eventos principales definidos por Redis.
El evento de "comando rápido" se define para los comandos Redis que tienen O (1) u (log n) complejidad del tiempo, como HSET, HINCRBY, HLEN, etc.
La ruta del código de "comando" mide los picos de latencia para los otros comandos con o (n) complejidad del tiempo.
Habilitando el monitoreo de latencia en Redis Server
Los valores de latencia dependen de la naturaleza de la aplicación. Una aplicación podría considerar 10 milisegundos como alta latencia. Al mismo tiempo, otra aplicación considera 1 segundo como un valor alto. Por lo tanto, Redis le ofrece una opción para definir el umbral de latencia en el servidor. Por defecto, el valor umbral es 0. Hay dos formas de establecer este valor en Redis:
El subcomand de configuración establecido
Puede usar el subcomand de configuración con el parámetro y su valor para establecer el valor umbral, como se muestra en lo siguiente. Aquí lo establecemos como 500 milisegundos.
configurar establecer el umbral de latencia-monitor 500
Modificando el redis.archivo conf
Podemos iniciar el servidor Redis proporcionando todas las configuraciones en un archivo de configuración llamado "Redis.conf ". En la sección "Monitor de latencia", puede establecer el valor del parámetro "Latency-monitor-umbral" en consecuencia.
Se recomienda reiniciar el servidor Redis después de modificar el archivo de configuración.
El subcomando del gráfico de latencia
El comando "Latencia" ofrece varios subcomandos para recuperar la información de latencia basada en eventos. Uno de los comandos populares es el "Gráfico de latencia". Dibuja un gráfico contra el momento en que el evento ha sucedido. Este gráfico se basa en símbolos ASCII y varía del valor de latencia mínimo al máximo. Los picos de latencia se normalizan entre las latencias Min y Max.
Usemos el comando "Depurar el sueño" para verificar cómo se genera la información del gráfico de latencia.
Sintaxis
Gráfico de latencia
El parámetro "Event_Name" puede ser cualquier evento definido por el marco de monitoreo de latencia de Redis, como comando, comando rápido, bifurcación, etc.
Ejemplo 01 - Aplicaciones con latencia por debajo del umbral
Usemos el comando "Sleep de depuración" para generar algunos picos de latencia. Se irá a dormir hasta el tiempo de espera especificado. Dado que el umbral de latencia es de 500 ms, emitiremos comandos de sueño con un tiempo de espera inferior a 500 ms.
Depurar el sueño .1
Depurar el sueño .2
Depurar el sueño .3
A continuación, emitiremos el comando de gráfico de latencia como se muestra en el siguiente:
Comando de gráfico de latencia
Que idealmente generaría el gráfico de latencia de estilo ASCII para los comandos anteriores. Dado que el tiempo de ejecución de comandos es más bajo que el valor umbral en los tres comandos de "sueño de depuración", Redis no generará picos de latencia. Si asumimos que esta es nuestra solicitud en tiempo real, todos están bien. No hay problemas de latencia adjuntos.
Producción:
Como se esperaba, dice que no hay muestras disponibles para este evento en particular.
Ejemplo 02 - Aplicaciones con latencia mayores que el umbral
Emitamos algunos comandos de depuración con un valor de tiempo de espera mayor que el valor umbral. Por lo general, es mejor restablecer todos los picos de latencia anteriores antes del siguiente conjunto de comandos, como se muestra en lo siguiente:
Comando de reinicio de latencia
A continuación, emitiremos los comandos de sueño de depuración con un valor de tiempo de espera de más de 500 ms.
Depurar el sueño .7
Depurar el sueño .9
depurar dormir 1
Producción:
Como se esperaba, el gráfico de estilo ASCII ha sido generado por Redis. El "_" denota el valor de latencia más bajo, y el símbolo "#" denota el pico de latencia más alto que ocurrió en los últimos 20 segundos. Este gráfico se puede interpretar verticalmente. Cada columna es para un evento que ha ocurrido en los últimos segundos, minutos o días. La columna más izquierda se puede interpretar como el evento que ocurrió hace 20 segundos, la siguiente ha sucedido hace 14 segundos, y la última columna denota un evento que ocurrió hace 4 segundos.
Conclusión
Redis se utiliza como un almacén de datos para aplicaciones en tiempo real. Por lo tanto, los aspectos de rendimiento son cruciales. El marco de monitoreo de latencia es un componente ofrecido por Redis para monitorear los picos de latencia para eventos predefinidos. El "comando de gráfico de latencia" se puede usar para generar los picos de latencia de estilo ASCII para un marco de tiempo determinado. Se utiliza para identificar las tendencias de latencia en su aplicación y tomar las acciones necesarias de antemano. Se generarán los picos de latencia si el tiempo de latencia es mayor que el valor umbral. El valor umbral de latencia puede diferir de una aplicación a otra basada en la naturaleza.