Explosiones de tráfico, sobrecarga de servicios, ¿cómo limitar el umbral de los servicios distribuidos?

1. Problemas enfrentados

En un enorme sistema de computación en la nube + distribuido + orientado a servicios, existe una gran estructura de red compuesta por decenas de miles de nodos de servicio. Los enlaces de llamada son complejos. Los servicios en el mismo nodo tienen relaciones de competencia de recursos, y los nodos ascendentes y descendentes Hay una relación competitiva y también existe una relación de conducción de presión, por lo que cada nodo de servicio y cada servicio en él deben implementar protección del tráfico.

En la actualidad, las tecnologías de protección del tráfico, como la limitación de corriente y los disyuntores, están relativamente maduras, sin embargo, en la aplicación real, la configuración de los parámetros relevantes es demasiado laxa y no puede desempeñar un papel de protección ideal cuando el tráfico externo aumenta repentinamente. Problemas como la competencia por los nodos de servicio Todavía se producen a menudo tiempos de espera de recursos y transacciones.

Por lo tanto, cómo evaluar y establecer razonablemente el umbral límite actual de los servicios se ha convertido en un problema difícil que preocupa al personal de mantenimiento del sistema. Este tema de investigación intenta encontrar una solución razonable.

2. El proceso de resolución.

Indicadores limitantes de corriente de servicio común.

La limitación actual es rechazar algunas solicitudes de acuerdo con reglas para el tráfico de solicitudes que excede un umbral preestablecido para garantizar que los recursos clave del nodo de servicio no se agoten por el aumento repentino del tráfico y evitar otros problemas secundarios.

Para los nodos de servicio, los indicadores limitantes actuales más comúnmente utilizados son: número de solicitudes procesadas por segundo (TPS) y número máximo de concurrencias.

El nivel empresarial requiere que el nodo de servicio alcance una determinada capacidad de procesamiento empresarial, que a menudo se describe por la cantidad de solicitudes que puede manejar por unidad de tiempo. Si la empresa ha aclarado los requisitos del indicador para el número de solicitudes procesadas por segundo (TPS), el umbral límite actual se puede establecer en consecuencia.

Desde la perspectiva de garantizar la estabilidad y disponibilidad del sistema, el mejor indicador limitante actual es: el número máximo de concurrencias. Al limitar el número máximo de concurrencias en un servicio, puede asegurarse de que el servicio no tenga demasiados procesos simultáneos que consuman recursos en ningún momento.

En teoría, estos dos indicadores se pueden convertir aproximadamente utilizando la siguiente fórmula:

并发数=TPS*服务平均响应时间

Este artículo se centra en cómo evaluar el umbral límite actual del indicador de concurrencia máxima.

Evaluación del umbral límite actual general del nodo

1. Análisis teórico

El parámetro de límite actual se refiere al umbral del indicador que activa el límite actual. Si el umbral de limitación actual se establece demasiado grande, la limitación actual no se activará cuando aumente el tráfico, lo que provocará una sobrecarga del servidor de aplicaciones, deterioro del rendimiento y tiempo de espera del servicio; si se establece demasiado pequeño, el uso de recursos siempre será estar en un nivel bajo, desperdiciando recursos del servidor. Evaluar el umbral límite actual de un nodo de servicio es evaluar la cantidad de solicitudes que el nodo de servicio puede manejar simultáneamente, es decir, la cantidad máxima de servicios simultáneos. Para los nodos de servicio, el número máximo de servicios simultáneos está determinado por el tamaño del grupo de subprocesos de servicio.

Por lo tanto, el tamaño del grupo de subprocesos de servicio es el umbral límite actual general del nodo de servicio, que determina la capacidad de procesamiento, el uso de recursos y la estabilidad operativa del nodo de servicio. Para un parámetro tan crítico, se recomienda evaluarlo mediante pruebas de estrés.

Durante la prueba de estrés se encuentra un punto crítico donde el uso de recursos está en un nivel alto y el rendimiento del servicio no cae significativamente dentro del período correspondiente, en este punto crítico se mide el número de solicitudes procesadas por segundo (TPS) o el número máximo de concurrencias es el tamaño óptimo del grupo de subprocesos de servicio.

2. Método de prueba de presión

Para lograr mejores resultados de evaluación, el entorno de la prueba de estrés debe ser lo más consistente posible con la situación de producción: primero, la configuración de hardware del nodo de servicio debe ser consistente con la producción y, además, la proporción del volumen de transacciones de cada servicio en el nodo debe ser consistente con la producción. Si considera el costo de las pruebas, se recomienda elegir un servicio con una gran proporción de volumen de transacciones como muestra de prueba.

Para los nodos de servicio que ya se están ejecutando en línea, sería más ideal si se pudiera registrar el tráfico real durante los períodos de máxima producción para realizar pruebas de reproducción.

Durante la prueba de estrés, aumente gradualmente la concurrencia de solicitudes hasta que el uso de recursos del servidor alcance un nivel alto (por ejemplo, la CPU alcance aproximadamente el 80%). La concurrencia del servicio en este momento se puede utilizar como el umbral límite de corriente concurrente del nodo. , Este es el tamaño del grupo de subprocesos de servicio, como se muestra en la siguiente figura ▼.

imagen

3. Cosas a tener en cuenta

Durante la prueba de estrés se deberá observar simultáneamente si el tiempo medio de respuesta del servicio se deteriora. La curva de cambio de tiempo de respuesta promedio en la figura anterior es relativamente estable antes de que el número de concurrencia alcance el umbral límite actual, lo cual es una situación ideal.

Durante el proceso de prueba, el tiempo de respuesta promedio del servicio también puede deteriorarse y la tasa de utilización de recursos de hardware como CPU y memoria no es alta, lo que indica la existencia de otros problemas de cuellos de botella, como la eficiencia del acceso a la base de datos y bloqueos de objetos agregados. Por el programa para resolver la seguridad del hilo, etc., que deben ser investigados. Después de resolver el problema del cuello de botella, continúe con la prueba de presión.

Evaluación de umbrales de limitación de servicios individuales

1. Análisis teórico

El umbral de limitación de corriente general del nodo de servicio puede proteger hasta cierto punto el uso de recursos del nodo para que no se sobrecargue. Sin embargo, los recursos son limitados, cada nodo ejecuta múltiples servicios y habrá competencia entre servicios por los recursos, por lo que también se debe considerar la limitación de corriente a nivel de servicio para evitar que algunos servicios ocupen demasiados recursos. Para limitar los recursos utilizados por el servicio, el número de servicios concurrentes es el indicador de limitación actual más eficaz.

¿Se puede utilizar el número de concurrencias de cada servicio en el punto crítico de la prueba de estrés de la sección anterior como umbral límite actual de cada servicio? Combinado con la situación real, la respuesta es no. Debido a que la proporción del volumen de transacciones de cada servicio en el nodo cambia en cualquier momento, disminuyendo y fluyendo constantemente, dicho umbral límite actual es demasiado unilateral y carece de flexibilidad.

Para evaluar el umbral de aceleración de cada servicio, es necesario realizar una prueba de estrés para cada servicio por separado. En primer lugar, debemos evaluar la proporción de recursos que cada servicio puede utilizar como objetivo de uso de recursos que se debe alcanzar al tomar el punto crítico en la prueba de estrés.

Dependiendo de la importancia del servicio, el uso de recursos que se le permite ocupar es diferente, por ejemplo, en el nodo de servicio de pago rápido, el servicio de pago puede consumir la mayor parte de los recursos del nodo, mientras que se permiten otros servicios de consulta y mantenimiento. para obtener menos recursos.

2. Método de prueba de presión

Según la importancia de cada servicio, establezca el valor máximo de uso de recursos y realice pruebas de estrés por separado. Durante cada prueba de esfuerzo del servicio, aumente gradualmente la concurrencia de solicitudes hasta que el uso de recursos del servidor alcance el nivel objetivo (por ejemplo, la CPU alcance aproximadamente el 50%). El número de concurrencias de servicios en este momento se puede utilizar como el umbral límite actual concurrente. del nodo, como se muestra en la siguiente figura▼.

imagen

3. Análisis de datos históricos y método de predicción.

En las aplicaciones reales, la cantidad de servicios en cada nodo de servicio varía de docenas a cientos. Los costos de mano de obra y tiempo de las pruebas de estrés integrales de todos los servicios son demasiado altos y, en general, solo se pueden realizar pruebas de estrés a una pequeña cantidad de servicios clave.

Sin embargo, el objetivo principal de la limitación de la corriente del servicio es limitar la concurrencia de servicios no críticos y garantizar el suministro de recursos de los servicios clave. Simplemente establecer el umbral de limitación actual para los servicios clave no logra este objetivo. Por lo tanto, existe una contradicción entre costo y beneficio al calcular el umbral de limitación del servicio mediante el método de prueba de estrés, y es necesario buscar otras soluciones.

Obtuvimos el número máximo de concurrencia diaria del servicio en el período anterior a partir de los datos de monitoreo de producción y lo analizamos. Descubrimos que el número máximo histórico de concurrencia es de importancia de referencia para evaluar el umbral del límite actual del servicio, pero es necesario resolver los siguientes problemas resuelto:

Pregunta 1 : Dado que el algoritmo de equilibrio de carga es un algoritmo aleatorio, las cargas de diferentes nodos en el mismo clúster de servicios no son iguales, existe un cierto grado de aleatoriedad en el número máximo de concurrencias y existe una cierta probabilidad de fallas.

Además, algunas fallas en el sistema provocan un procesamiento lento del servicio o congelaciones, lo que también provocará un crecimiento anormal en la cantidad de servicios simultáneos. Ninguno de estos datos anormales debe usarse como base para evaluar el umbral límite actual;

Pregunta 2 : Con la promoción comercial, el volumen de transacciones del servicio seguirá creciendo y el número máximo de concurrencias en el futuro puede exceder rápidamente el número máximo histórico original de concurrencias.

En vista de los problemas anteriores, se pueden realizar algunos procesamientos en los datos históricos del número de servicios concurrentes para hacer que el umbral límite actual sea más razonable:

1. Realizar procesamiento de reducción de ruido en datos históricos para eliminar datos anormales causados ​​por aleatoriedad o fallas.

Considerando que las actividades promocionales de algunas empresas son cíclicas, como 618 cada año y Doble 11, es necesario obtener datos históricos de más de un año como base para el análisis. Suponiendo que los datos se ajustan a la distribución normal, la gran mayoría de los datos no están a más de tres desviaciones estándar de la media (99,73%), por lo que los datos que están a más de tres desviaciones estándar de la media se eliminan como rebabas.

2. Predecir la tendencia de los datos históricos y reservar un espacio de crecimiento razonable para el desarrollo empresarial futuro.

Teniendo en cuenta la cantidad de datos y el costo de computación, elegimos un modelo típico de análisis de series de tiempo: el modelo de media móvil autorregresiva ARMA. El modelo ARMA combina las características de autorregresión (AR) y media móvil (MA). Los resultados de la predicción integran las características de los datos de series temporales: Tendencias y Volatilidad. La siguiente figura muestra la tendencia de cambio y el intervalo de confianza del recuento de simultaneidad de un determinado servicio en los próximos tres meses elaborado utilizando el modelo ARMA (el nivel de confianza se establece en 0,99). El límite superior del intervalo de confianza se puede utilizar como umbral límite actual del servicio.

imagen

3. Situación práctica

Con base en la investigación teórica anterior y la discusión del programa, se puede concluir que el umbral límite actual general del nodo de servicio debe evaluarse utilizando el método de prueba de estrés; para el umbral límite actual de un solo servicio, el procesamiento de reducción de ruido y las tendencias deben ser Se realiza a través de datos históricos de concurrencia Predicción, generando recomendaciones a un menor costo.

Durante la implementación del proyecto de investigación, desarrollamos un sistema de control y gestión de parámetros de protección del tráfico para obtener el número máximo de concurrencia diaria de servicios en el último año a partir de los datos históricos de monitoreo de producción, y luego, con base en el algoritmo mencionado en el estudio anterior, Estos datos Se realizaron cálculos analíticos, como el procesamiento de reducción de ruido y la predicción de tendencias, para obtener los valores recomendados de los parámetros limitantes de corriente del servicio y proporcionar a los usuarios servicios de consulta y push activos.

imagen

Este sistema de control y gestión de parámetros de protección del tráfico ha recomendado los parámetros límite actuales para docenas de sistemas comerciales. Los usuarios han informado que los umbrales límite actuales recomendados por el sistema son más razonables y pueden prevenir de manera más efectiva los riesgos causados ​​por aumentos repentinos en el tráfico y garantizar la estabilidad. operación de nodos de servicios.

Supongo que te gusta

Origin blog.csdn.net/LinkSLA/article/details/132335219
Recomendado
Clasificación