Solución de problemas del servidor de Azure Cache for Redis
En esta sección se describe la solución de problemas causados por condiciones en un servidor de Azure Cache for Redis o en cualquiera de las máquinas virtuales que lo hospedan.
- Carga elevada del servidor
- Uso de memoria alto
- 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 .
Carga elevada del servidor
Una carga elevada del servidor significa que el servidor de Redis no puede mantenerse al día con las solicitudes, lo que provoca que se agote el tiempo de espera. Para comprobar la métrica Carga del servidor en la caché, seleccione Supervisión en el menú Recursos de la izquierda. Verá el gráfico Carga del servidor en el panel de trabajo en Información. O bien, agregue un conjunto de métricas a Carga del servidor en Métricas.
A continuación se muestran algunas opciones que se deben tener en cuenta para una carga elevada del servidor.
Escalado vertical u horizontal
Escale horizontalmente para agregar más particiones, de modo que la carga se distribuya entre varios procesos de Redis. Además, considere la posibilidad de escalar verticalmente a un tamaño de caché mayor con más núcleos de CPU. Para obtener más información, consulte Preguntas frecuentes sobre Azure Cache for Redis.
Cambios rápidos en el número de conexiones de cliente
Para más información, vea Evitar picos de conexión cliente.
Comandos de larga duración o costosos
Esta sección se ha movido. Para más información, vea Comandos de larga duración.
Ampliación
Las operaciones de escalado consumen mucha CPU y memoria, ya que podrían implicar mover datos entre los nodos y cambiar la topología del clúster. Para más información, consulte Escalado.
Mantenimiento del servidor.
Si la instancia de Azure Cache for Redis ha sufrido una conmutación por error, todas las conexiones de cliente del nodo que hayan quedo fuera se transfieren al nodo que todavía está en ejecución. La carga del servidor podría aumentar debido al aumento de las conexiones. Puede intentar reiniciar las aplicaciones cliente para que todas las conexiones de cliente se vuelvan a crear y redistribuir entre los dos nodos.
Uso de memoria alto
La presión de memoria en el servidor puede provocar varios problemas de rendimiento que retrasan el procesamiento de las solicitudes. Cuando se alcanza la presión de memoria, el sistema pagina los datos en el disco, lo que hace que se ralentice considerablemente.
Hay varias causas posibles para la presión de memoria:
- La caché se rellena con los datos cerca de su capacidad máxima
- En el servidor Redis se experimenta una fragmentación de memoria alta
Es probable que la fragmentación se deba a que un patrón de carga almacena datos con una gran variación de tamaño. Por ejemplo, la fragmentación puede producirse cuando los datos se reparten entre 1 KB y 1 MB de tamaño. Cuando se elimina una clave de 1 KB de la memoria existente, una clave de 1 MB no cabe en ella, lo que provoca fragmentación. De forma similar, si se elimina la clave de 1 MB y se agrega una clave de 1,5 MB, no puede caber en la memoria reclamada existente. Esto hace que la memoria libre no se utilice y da lugar a una mayor fragmentación.
Si el valor used_memory_rss
es superior al 150 % de la métrica used_memory
, hay fragmentación en la memoria. La fragmentación puede causar problemas cuando:
- El uso de memoria está cerca del límite máximo de memoria para la memoria caché, o bien
UsedMemory_RSS
es mayor que el límite de memoria máxima, lo que puede provocar errores de página en la memoria.
Si una memoria caché se fragmenta y se ejecuta bajo una presión de memoria alta, el sistema realiza una conmutación por error para intentar recuperar la memoria de tamaño establecido de residentes (RSS).
Redis expone dos estadísticas, used_memory
y used_memory_rss
, a través del comando INFO que puede ayudarle a identificar este problema. También puede ver estas métricas mediante el portal.
Compruebe que los valores maxmemory-reserved
y maxfragmentationmemory-reserved
están establecidos correctamente.
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.
- 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. Para obtener más información, consulte Preguntas frecuentes sobre Azure Cache for Redis.
Para obtener recomendaciones sobre la administración de memoria, vea Procedimientos recomendados para la administración de memoria.
Comandos de ejecución prolongada
Esta sección se ha movido. Para más información, vea Comandos de larga duración.
Limitación de ancho de banda del lado servidor
Esta sección se ha movido. Para más información, vea Limitación de ancho de banda de red.