Solución de problemas del lado servidor de Redis Cache
En esta sección se describen problemas que se producen debido a una condición en una instancia de Redis Cache o en las máquinas virtuales que la hospedan.
- Presión de memoria en el servidor de Redis
- Uso elevado de la CPU o carga del servidor
- Comandos de ejecución prolongada
- Limitación de ancho de banda del lado servidor
Nota
Algunos de los pasos de solución de problemas de esta guía incluyen instrucciones para ejecutar comandos de Redis y supervisar diversas métricas de rendimiento. Para más información e instrucciones, consulte los artículos de la sección Información adicional .
Presión de memoria en el servidor de Redis
La presión de memoria en el servidor genera todo tipo de problemas de rendimiento que pueden retrasar el procesamiento de solicitudes. Cuando se alcanza la presión de memoria, el sistema puede paginar datos en el disco. Estos errores de página hacen que el sistema se ralentice considerablemente. Hay varias causas posibles de esta presión de memoria:
- La caché se rellena con los datos cerca de su capacidad máxima.
- Redis ve la fragmentación de memoria alta. El almacenamiento de objetos grandes es lo que suele provocar esta fragmentación, ya que Redis está optimizado para objetos pequeños.
Redis expone dos estadísticas a través del comando INFO que ayuda a identificar esta incidencia: "used_memory" y "used_memory_rss". También puede ver estas métricas mediante el portal.
Hay varios cambios posibles que puede hacer para ayudar a mantener una utilización de memoria correcta:
- Configurar una directiva de memoria y establecer tiempos de expiración de las claves. Esta directiva puede no ser suficiente si tiene fragmentación.
- Configurar un valor rmaxmemory-reserved lo suficientemente grande como para compensar la fragmentación de la memoria.
- Dividir los objetos grandes que están en la memoria caché en objetos relacionados más pequeños.
- Crear alertas en métricas como la memoria usada para recibir una notificación anticipada sobre los impactos potenciales.
- Escalar a un tamaño mayor de caché con más capacidad de memoria.
- Escalar a un tamaño mayor de caché con más capacidad de memoria. Para obtener más información, consulte Preguntas frecuentes sobre Azure Cache for Redis.
Uso elevado de la CPU o carga del servidor
Una carga o utilización de la CPU elevada en el servidor significa que el servidor no puede procesar solicitudes de manera oportuna. Puede que el servidor tarde en responder y sea capaz de seguir el ritmo con las tasas de solicitud.
Supervise las métricas, como la carga de la CPU o el servidor. Busque picos de uso de CPU que correspondan a tiempos de espera agotados.
Hay varios cambios que puede hacer para mitigar la carga elevada en el servidor:
- Investigar lo que provoca picos de la CPU tales como los comandos de ejecución prolongada que se indican a continuación o los errores de página debido a la presión de memoria alta.
- Crear alertas en métricas como la carga de la CPU o el servidor para recibir una notificación anticipada sobre los impactos potenciales.
- Escale horizontalmente a más particiones para distribuir la carga entre varios procesos de Redis o escalar verticalmente a un tamaño de caché mayor con más núcleos de CPU. Para obtener más información, consulte Rendimiento de Azure Cache for Redis.
Comandos de ejecución prolongada
Algunos comandos de Redis son más caros de ejecutar que otros. La documentación de comandos de Redis muestra la complejidad de tiempo de cada comando. Dado que el procesamiento de comandos de Redis es uniproceso, un comando que tarde en ejecutarse bloqueará todos los demás que vayan después. Debe revisar los comandos que emite al servidor de Redis para comprender sus efectos en el rendimiento. Por ejemplo, el comando KEYS a menudo se usa el sin saber que se trata de una operación O(N). Puede evitar el comando KEYS mediante el uso de SCAN para reducir los picos de la CPU.
Mediante el comando SLOWLOG, puede medir los comandos caros que se ejecutan en el servidor.
Limitación de ancho de banda del lado servidor
Tamaños de caché diferentes tienen capacidades distintas de ancho de banda de red. Si el servidor supera el ancho de banda disponible, los datos no se enviarán al cliente con la misma rapidez. Las solicitudes de los clientes podrían agotar el tiempo de espera debido a que el servidor no puede insertar datos al cliente lo suficientemente rápido.
Las métricas de "Lectura de caché" y "Escritura de caché" pueden usarse para ver el ancho de banda del lado servidor que se está usando. Puede ver estas métricas en el portal.
Para mitigar las situaciones en las que la utilización de ancho de banda de red está cerca de la capacidad máxima, haga lo siguiente:
- Cambiar el comportamiento de la llamada de cliente para reducir la demanda de la red.
- Crear alertas en métricas como la lectura de caché o la escritura de caché para recibir una notificación anticipada sobre los impactos potenciales.
- Escalar a un tamaño mayor de caché con más capacidad de ancho de banda de red. Para obtener más información, consulte Preguntas frecuentes sobre Azure Cache for Redis.