En nuestra CDN desarrollamos continuamente formas nuevas e innovadoras para ayudar a nuestra infraestructura a mantener un alto rendimiento y resiliencia durante aumentos repentinos de carga. Esto a menudo implica explorar optimizaciones en las técnicas existentes que utilizamos. Además, validar nuevos enfoques es una parte importante de este proceso, ya que garantiza que los nuevos cambios tengan los impactos positivos esperados en los entornos de producción.
Cuando el contenido se vuelve popular, lo replicamos en varios servidores en un centro de datos/punto de presencia (POP). Esto nos permite equilibrar mejor la carga y manejar tales oleadas, reduciendo el riesgo de sobrecarga de servidores. Este mecanismo de replicación se denomina ‘Hot Filing’, y el contenido popular se denomina ‘hot file’. Recientemente desarrollamos una optimización de balanceo de carga adaptativa (ALB) que mejora nuestro sistema tradicional de presentación en caliente haciéndolo más resistente a las subidas de tráfico. En particular, decide dinámicamente la cantidad de replicación necesaria midiendo la carga del servidor en lugar de depender de umbrales estáticos. Esto distribuye de manera más uniforme la carga entre todos los servidores en un POP, aumentando la capacidad general de gestión de solicitudes de cualquier POP y, por lo tanto, la CDN. Nuestro artículo anterior sobre la evaluación de un sistema de equilibrio de carga adaptativo detalla la mecánica de esta optimización.
En este post, validamos el impacto positivo de esta optimización en la producción. Comenzamos definiendo las métricas que usamos para medir el impacto. A continuación, mostramos el impacto de la optimización en cada una de estas métricas a través de ejemplos. Finalmente, mostramos el impacto agregado de la optimización en todos los COP donde se implementó. En resumen, encontramos que los servidores de tiempo total vieron una carga excesiva más allá de un umbral predefinido reducido en al menos un 70%, mientras que casi todos los POP vieron una mejora en esta métrica. Esta optimización ahora está habilitada globalmente para todo el tráfico de clientes.
Definir las métricas
Para evaluar el impacto de esta nueva optimización en la producción, definimos y monitorizamos tres métricas:
- Sesgo del servidor: Esta es la relación de la carga de un servidor sobre la carga media sobre todos los servidores en el POP.
- Número de archivos calientes: Este es el número de archivos replicados por el mecanismo Hot Filing en un momento dado. Se espera que el equilibrio de carga adaptativo aumente el número de archivos calientes, ya que el llenado en caliente es el mecanismo subyacente para su distribución de carga.
- Tiempo que los servidores pasan por encima de la distorsión del objetivo: Esta métrica evalúa la efectividad del equilibrio de carga adaptativo. Cuando establecemos nuestro umbral de sesgo objetivo en un valor particular, queremos ver que la sesga de la mayoría de los servidores suele ser menor que ese valor.
Impacto de la optimización en las métricas monitorizadas
LOGRAR LA DISTORSIÓN DE LOS OBJETIVOS
La siguiente figura muestra dos instantáneas de la distribución de carga de servidores en un POP. A la izquierda (sin balanceo de carga adaptativo), vemos un número de servidores que exceden el objetivo de sesgo (caja roja) con su carga por encima de 1,8 veces la mediana del pop. A la derecha (con Equilibrio de carga adaptativo), vemos un mayor equilibrio entre servidores, sin servidores que exhiban una carga superior a 1,8 veces la mediana.
Cambio en la distribución de carga con el equilibrio de carga adaptativo. Notamos una reducción en servidores sobrecargados.
NÚMERO DE ARCHIVOS CALIENTES Y DISTRIBUCIÓN DE CARGA
A continuación, examinamos cómo se impactó el número de archivos calientes y los cambios correspondientes en la carga en cada servidor. El gráfico a continuación muestra que el número de archivos activos aumentó cuando ALB se habilitó en un POP. Este comportamiento se esperaba ya que el mecanismo aumenta selectivamente las posibilidades de que los archivos se descarguen de los servidores con una carga más alta.
Fundamentalmente, el archivo en caliente y ALB reducen la carga en servidores individuales al aumentar el número de servidores que dan servicio a archivos particulares. Esto aumenta la carga de almacenamiento en cada servidor. Sin embargo, los archivos adicionales elegidos para ser replicados en un momento dado son relativamente bajos en comparación con el total de archivos servidos desde el POP, ya que se seleccionan solo de servidores atípicos que requieren descarga. En la mayoría de los casos, el espacio de caché adicional utilizado es muy pequeño en comparación con el espacio total en disco. Por lo tanto, la compensación vale la pena pero es importante identificarla y ser consciente de ella. En nuestra implementación, incluimos comprobaciones de sanidad para validar que el uso de la caché no se vea afectado negativamente por esta optimización.
Número de archivos calientes. El número aumenta cuando se activa el Equilibrio de carga adaptativo (marcador rojo) ya que se intenta descargar servidores atípicos.
El segundo gráfico muestra el volumen de tráfico entregado por cada servidor en el mismo período de tiempo en ese POP. Observamos que cuando se habilitaba el equilibrio de carga adaptativo (línea roja discontinua) la carga entre servidores se equilibraba más. Esto hizo que los servidores fueran más resistentes al tráfico entrante y redujo el riesgo de sobrecarga de servidores.
Distribución de carga (Mbps) en un POP entre 05/02-05/04. Cuando se activa el Equilibrio de carga adaptativo, la distribución se vuelve más fluida, con más servidores que entregan tráfico más cerca de la media. Esto ayuda a mitigar el riesgo de que los servidores se sobrecarguen con nuevo tráfico.
TIEMPO PASADO POR ENCIMA DE LA DISTORSIÓN DEL OBJETIVO
Aquí, consideramos un experimento en el que un pop se estableció para mantener una distorsión objetivo de 1.6x. En la figura de abajo, la línea naranja muestra la distribución de la “inclinación del servidor” durante el período del experimento. Comparando esta distribución con la línea azul, que es la distribución respectiva para el período de línea de base (sin balanceo de carga adaptativo), vimos un cambio de carga hacia la mediana. Notablemente, la “cola” de la distribución también se redujo significativamente, con el percentil 99 cayendo de 2,12 a 1,52, por debajo de la distorsión objetivo.
El equilibrio de carga adaptativo disminuye la carga máxima del servidor y acerca las cargas del servidor a la mediana.
Reducir esa “cola” en la distribución es el objetivo principal de la optimización, ya que los servidores en esa cola, es decir, aquellos con mayor carga, corren un mayor riesgo de sobrecargarse con nuevos picos de tráfico. Para cuantificar aún más esta reducción, también medimos el número de minutos durante los cuales cualquier servidor entregó tráfico sobre el objetivo durante los períodos de experimento con/sin Equilibrio de carga adaptativo:
El equilibrio de carga adaptativo reduce el tiempo que los servidores pasan entregando una carga por encima de un umbral objetivo.
En este caso, observamos una reducción del 88% en el tiempo invertido por encima de la distorsión objetivo en este pop. Este es un buen indicador de que el Equilibrio de Carga Adaptativa puede mantener la distorsión de la distribución de carga alrededor del valor deseado.
Resultados del despliegue global
Después de probar la optimización en un puñado de POP seleccionados y ver buenos resultados en las métricas medidas, implementamos el sistema en cada POP para cuantificar el impacto agregado a lo largo del tiempo. Como antes, medimos el número de servidores de minutos colectivos en un POP gastados entregando tráfico por encima de nuestro sesgo objetivo especificado (establecido en 1,8 veces la carga media del servidor en un POP). La siguiente gráfica muestra dos distribuciones de servidores de minutos gastados sobre ese umbral para 75 POP. La línea azul corresponde a 4 días de datos basales, y la línea naranja corresponde a 4 días de datos de balanceo de carga adaptativo. El desplazamiento general de la distribución a la izquierda muestra que los servidores de los POP que ejecutan el equilibrio de carga adaptativo pasaron menos minutos por encima del umbral.
Agrega los minutos gastados por los servidores que entregan una carga superior al umbral especificado (1,8 * mediana) durante 4 días para todos los POP. Con el equilibrio de carga adaptativo, la distribución se desplaza hacia la izquierda, lo que muestra que el mecanismo mantiene las cargas del servidor por debajo de la desviación de destino de la mediana durante más tiempo.
Para comprender mejor los impactos en los COP individuales, también registramos el cambio porcentual de esta métrica para cada POP. Los resultados mostraron que la mitad de los COP vieron una reducción del 70-95% en el total de servidores de tiempo por encima de la distorsión objetivo, y casi todos los COP vieron una reducción en el tiempo empleado por encima del umbral.
En nuestro esfuerzo continuo por mejorar continuamente el rendimiento y la confiabilidad de nuestra CDN, recientemente implementamos y evaluamos una optimización en la forma en que equilibramos el tráfico dentro de un POP. Esta optimización identifica los servidores cargados sobre un umbral específico en comparación con el resto del POP y descarga esos servidores, en particular mitigando el riesgo de impacto en el rendimiento en caso de nuevos picos de tráfico. Los resultados de la producción demuestran mejoras significativas que han sido consistentes con los resultados de simulación anteriores en mostrar la eficiencia de la optimización para mantener la distribución de la carga del servidor dentro de una distorsión deseada. Como resultado, ahora hemos habilitado esta optimización a nivel global para todo el tráfico de clientes.
Un agradecimiento especial a Angela Chen por trabajar en la implementación y despliegue de este mecanismo. También, gracias a Scott Yeager, Derek Shiell, Marcel Flores, Anant Shah y Reed Morrison por ayudar con las discusiones generales, Colin Rasor, Richard Rymer y Olexandr Rybak por ayudar con la recopilación y visualización de datos.