Cloud Composer 1 | Cloud Composer 2
En esta página, se explica cómo ajustar los parámetros de escala y rendimiento de tu entorno a las necesidades de tu proyecto para mejorar el rendimiento y reducir los costos de los recursos que tu entorno no utiliza.
Otras páginas sobre escalamiento y optimización:
- Para obtener información sobre cómo escalar tus entornos, consulta Escalado de entornos.
- Para obtener información sobre cómo funciona el escalamiento del entorno, consulta Escalamiento del entorno.
- Para obtener un instructivo sobre la supervisión de las métricas clave del entorno, consulta Supervisa el estado y el rendimiento del entorno con métricas clave.
Visión general del proceso de optimización
Realizar cambios en los parámetros de tu entorno puede afectar muchos aspectos de su rendimiento. Te recomendamos que optimices tu entorno en iteraciones:
- Comienza con los ajustes predeterminados del entorno.
- Ejecuta tus DAG.
- Observa el rendimiento de tu entorno.
- Ajusta la escala de tu entorno y los parámetros de rendimiento y, luego, repite los pasos desde el paso anterior.
Comenzar con ajustes predeterminados de entorno
Cuando creas un entorno en la consola de Google Cloud, puedes seleccionar uno de los tres ajustes predeterminados. Estos ajustes predeterminados establecen la escala inicial y la configuración de rendimiento del entorno. Después de crearlo, puedes cambiar todos los parámetros de escala y rendimiento que proporciona un ajuste predeterminado.
Te recomendamos comenzar con uno de los ajustes predeterminados según las siguientes estimaciones:
- Cantidad total de DAG que planeas implementar en el entorno
- Cantidad máxima de ejecuciones simultáneas de DAG
- Cantidad máxima de tareas simultáneas
El rendimiento de tu entorno depende de la implementación de DAG específicos que ejecutas en tu entorno. En la siguiente tabla, se enumeran las estimaciones basadas en el consumo promedio de recursos. Si esperas que tus DAG consuman más recursos, ajusta las estimaciones según corresponda.
Ajuste predeterminado recomendado | DAG totales | Ejecuciones de DAG máximas en simultáneo | Cantidad máxima de tareas simultáneas |
---|---|---|---|
Pequeñas | 50 | 15 | 18 |
Medio | 250 | 60 | 100 |
Grandes | 1000 | 250 | 400 |
Por ejemplo, un entorno debe ejecutar 40 DAG. Todos los DAG deben ejecutarse al mismo tiempo con una tarea activa cada uno. Este entorno usaría un ajuste predeterminado medio, ya que la cantidad máxima de ejecuciones y tareas de DAG simultáneas supera las estimaciones recomendadas para el ajuste predeterminado pequeño.
Ejecuta tus DAG
Una vez que se haya creado tu entorno, sube tus DAG. Ejecuta tus DAG y observa el rendimiento del entorno.
Recomendamos ejecutar tus DAG según un programa que refleje la aplicación en la vida real de tus DAG. Por ejemplo, si deseas ejecutar varios DAG al mismo tiempo, asegúrate de verificar el rendimiento de tu entorno cuando todos estos DAG se ejecuten de forma simultánea.
Observa el rendimiento de tu entorno
En esta sección, nos enfocamos en los aspectos más comunes de los ajustes de rendimiento y capacidad de Cloud Composer 2. Te recomendamos que sigas esta guía paso a paso porque primero se abordan las consideraciones de rendimiento más comunes.
Ir al panel de Monitoring
Puedes supervisar las métricas de rendimiento de tu entorno en el panel de Monitoring del entorno.
Sigue estos pasos para ir al panel de Monitoring de tu entorno:
En la consola de Google Cloud, ve a la página Entornos.
Haz clic en el nombre de tu entorno.
Ve a la pestaña Supervisión.
Supervisa las métricas de CPU y memoria del programador
Las métricas de memoria y CPU del programador de Airflow te ayudan a verificar si el rendimiento del programador es un cuello de botella en el rendimiento general de Airflow.
En el panel de Supervisión, en la sección Programadores, observa los grafos de Airflow de tu entorno:
- Uso total de CPU de los programadores
- Uso total de memoria de los programadores
Ajústalos en función de tus observaciones:
Si el uso del programador de la CPU es constantemente inferior al 30% al 35%, te recomendamos lo siguiente:
Si el uso de la CPU del programador supera el 80% durante más tiempo que un porcentaje del tiempo total, puedes hacer lo siguiente:
Supervisa el tiempo total de análisis de todos los archivos DAG
Los programadores analizan los DAG antes de programar sus ejecuciones. Si los DAG tardan mucho tiempo en analizarse, esto consume la capacidad del programador y puede reducir el rendimiento de las ejecuciones de DAG.
En el panel de Monitoring, en la sección Estadísticas de DAG, observa los grafos del tiempo total de análisis del DAG.
Si la cantidad supera alrededor de 10 segundos, es posible que tus programadores estén sobrecargados con el análisis de DAG y no puedan ejecutar DAG de manera efectiva. La frecuencia predeterminada de análisis del DAG en Airflow es de 30 segundos. Si el tiempo de análisis del DAG supera este umbral, los ciclos de análisis comienzan a superponerse, lo que agota la capacidad del programador.
De acuerdo con tus observaciones, podrías querer hacer lo siguiente:
- Simplifica tus DAG, incluidas sus dependencias de Python.
- Aumenta el intervalo de análisis del archivo DAG y aumenta el intervalo de la lista del directorio del DAG.
- Aumenta la cantidad de programadores.
- Aumenta la CPU de los programadores.
Supervisa las expulsiones de Pods de trabajadores
La expulsión de Pods puede ocurrir cuando un Pod particular del clúster de tu entorno alcanza sus límites de recursos.
Si se expulsa un pod de trabajador de Airflow, todas las instancias de tareas que se ejecutan en ese pod se interrumpen y, luego, se marcan como con errores en Airflow.
La mayoría de los problemas relacionados con las expulsiones de Pods de trabajadores ocurren debido a situaciones de falta de memoria en los trabajadores.
En el panel de Supervisión, en la sección Programadores, observa los gráficos Expulsiones de pods de trabajador de tu entorno:
En el gráfico Uso total de memoria de los trabajadores, se muestra una perspectiva total del entorno. Un solo trabajador puede exceder el límite de memoria, incluso si el uso de la memoria es adecuado a nivel del entorno.
De acuerdo con tus observaciones, podrías querer hacer lo siguiente:
- Aumenta la memoria disponible para los trabajadores.
- Reduce la simultaneidad de trabajadores. De esta manera, un solo trabajador maneja menos tareas a la vez. Esto proporciona más memoria o almacenamiento a cada tarea individual. Si cambias la simultaneidad de trabajadores, es posible que también quieras aumentar la cantidad máxima de trabajadores. De esta manera, la cantidad de tareas que tu entorno puede controlar a la vez permanece igual. Por ejemplo, si reduces la simultaneidad de trabajadores de 12 a 6, es posible que desees duplicar la cantidad máxima de trabajadores.
Supervisa a los trabajadores activos
La cantidad de trabajadores en tu entorno se escala automáticamente en respuesta a las tareas en cola.
En el panel de Monitoring, en la sección Workers (Trabajadores), observa los gráficos que indican la cantidad de trabajadores activos y la cantidad de tareas en la cola:
- Trabajadores activos
- Tareas de Airflow
Ajústalos en función de tus observaciones:
- Si el entorno alcanza con frecuencia su límite máximo de trabajadores y, al mismo tiempo, la cantidad de tareas en la cola de Celery es continuamente alta, te recomendamos aumentar la cantidad máxima de trabajadores.
Si hay grandes retrasos en la programación entre tareas, pero al mismo tiempo el entorno no escala verticalmente hasta su cantidad máxima de trabajadores, es probable que haya una configuración de Airflow que limite la ejecución y evite que los mecanismos de Cloud Composer escalen el entorno. Debido a que los entornos de Cloud Composer 2 escalan según la cantidad de tareas en la cola de Celery, configura Airflow para que no limite las tareas en el camino a la cola:
- Aumenta la simultaneidad de los trabajadores. La simultaneidad de trabajadores debe establecerse en un valor que sea mayor que la cantidad máxima esperada de tareas simultáneas, dividida por la cantidad máxima de trabajadores en el entorno.
- Aumenta la simultaneidad del DAG si un solo DAG ejecuta una gran cantidad de tareas en paralelo, lo que puede generar que se alcance la cantidad máxima de instancias de tareas en ejecución por DAG.
- Aumenta la cantidad máxima de ejecuciones activas por DAG, si ejecutas el mismo DAG varias veces en paralelo, lo que puede hacer que Airflow regula la ejecución porque se alcanza el límite máximo de ejecuciones activas por DAG.
Supervisa el uso de CPU y memoria de los trabajadores
Supervisa el uso total de CPU y memoria agregado entre todos los trabajadores de tu entorno para determinar si los trabajadores de Airflow usan los recursos del entorno de forma correcta.
En el panel de Monitoring, en la sección Trabajadores, observa los gráficos del uso de CPU y memoria por parte de los trabajadores de Airflow:
- Uso total de trabajadores de CPU
- Uso total de la memoria de trabajadores
En este gráfico, se representa el uso agregado de recursos; los trabajadores individuales aún pueden alcanzar sus límites de capacidad, incluso si la vista agregada muestra la capacidad libre.
Ajústalos en función de tus observaciones:
- Si el uso de memoria de los trabajadores se acerca al límite, es posible que se produzcan expulsiones de Pods de trabajadores. Para solucionar este problema, aumenta la memoria de trabajador.
- Si el uso de memoria es mínimo en comparación con el límite y no hay expulsiones de Pods de trabajadores, te recomendamos disminuir la memoria de los trabajadores.
Si el uso de CPU de los trabajadores se acerca al límite (supera el 80% durante más de un pequeño porcentaje del tiempo total), es posible que quieras realizar lo siguiente:
- Aumenta la cantidad de trabajadores. Esto le brinda a tu entorno más control sobre la capacidad aprovisionada para una carga de trabajo en particular.
- Aumenta la CPU de los trabajadores o reduce la simultaneidad de los trabajadores si las tareas individuales necesitan una asignación de CPU mayor. De lo contrario, te recomendamos aumentar la cantidad de trabajadores.
Supervisa las tareas en ejecución y en cola
Puedes supervisar la cantidad de tareas en cola y en ejecución para verificar la eficiencia del proceso de programación.
En el panel de Monitoring, en la sección Trabajadores, observa el gráfico Tareas de Airflow de tu entorno.
Las tareas en la cola están en espera para que los trabajadores las ejecuten. Si tu entorno tiene tareas en cola, esto podría significar que los trabajadores están ocupados ejecutando otras tareas.
Algunas colas siempre están presentes en un entorno, en especial durante los picos de procesamiento. Sin embargo, si observas una gran cantidad de tareas en cola o una tendencia creciente en el gráfico, esto podría indicar que los trabajadores no tienen suficiente capacidad para procesar las tareas o que Airflow está regulando la ejecución de tareas.
Por lo general, se observa una gran cantidad de tareas en cola cuando la cantidad de tareas en ejecución también alcanza el nivel máximo.
Para abordar ambos problemas, haz lo siguiente:
Cómo supervisar el uso de memoria y CPU de la base de datos
Los problemas de rendimiento de la base de datos de Airflow pueden provocar problemas generales de ejecución del DAG. El uso del disco de la base de datos no suele ser una causa de preocupación porque el almacenamiento se extiende de forma automática según sea necesario.
En el panel de Supervisión, en la sección Programadores, observa los gráficos para el uso de memoria y CPU de la base de datos de Airflow:
- Uso de CPU de la base de datos
- Uso de memoria de la base de datos
Si el uso de CPU de la base de datos supera el 80% durante más de un pequeño porcentaje del tiempo total, la base de datos se sobrecarga y necesita escalamiento.
La propiedad de tamaño de tu entorno controla la configuración del tamaño de la base de datos. Para aumentar o reducir la escala de la base de datos, cambia el tamaño del entorno a un nivel diferente (pequeño, mediano o grande). Aumentar el tamaño del entorno incrementa sus costos.
Cómo supervisar la latencia de la programación de tareas
Si la latencia entre las tareas supera los niveles esperados (por ejemplo, 20 segundos o más), esto podría indicar que el entorno no puede manejar la carga de tareas que generan las ejecuciones del DAG.
Puedes ver el gráfico de latencia de la programación de tareas en la IU de Airflow de tu entorno.
En este ejemplo, los retrasos (2.5 y 3.5 segundos) están dentro de los límites aceptables, pero las latencias mucho más altas pueden indicar lo siguiente:
- El programador está sobrecargado. Supervisa la CPU y la memoria del programador para detectar indicios de posibles problemas.
- Las opciones de configuración de Airflow son la limitación de la ejecución. Intenta aumentar la simultaneidad de trabajadores, aumentar la simultaneidad del DAG o aumentar la cantidad máxima de ejecuciones activas por DAG.
- No hay suficientes trabajadores para ejecutar tareas. Intenta aumentar la cantidad máxima de trabajadores.
Supervisa la CPU y la memoria del servidor web
El rendimiento del servidor web de Airflow afecta la IU de Airflow. No es común que el servidor web se sobrecargue. Si esto sucede, el rendimiento de la IU de Airflow podría deteriorarse, pero no afectará el rendimiento de las ejecuciones de DAG.
En el panel de Supervisión, en la sección servidor web, observa los gráficos del servidor web de Airflow:
- Uso de CPU del servidor web
- Uso de memoria del servidor web
Según tus observaciones:
- Si el uso de la CPU del servidor web está por encima del 80% durante más de un pequeño porcentaje de tiempo, considera aumentar la CPU del servidor web.
- Si observas un uso elevado de memoria del servidor web, considera agregar más memoria al servidor web.
Ajusta los parámetros de escala y rendimiento del entorno
Cambiar la cantidad de programadores
Ajustar la cantidad de programadores mejora la capacidad del programador y la resiliencia de la programación de Airflow.
Si aumentas la cantidad de programadores, aumentará el tráfico desde y hacia la base de datos de Airflow. Recomendamos usar dos programadores de Airflow en la mayoría de los casos. Solo se requiere el uso de más de dos programadores en casos excepcionales que requieran consideraciones especiales.
Si necesitas una programación más rápida, haz lo siguiente:
- Configurar dos programadores de Airflow
- Asignar más recursos de CPU y memoria a los programadores de Airflow
- Aumenta dag-dir-list-interval.
- Aumenta min-file-process-interval.
- Aumentar job-Heartbeat-sec
Ejemplos:
Console
Sigue los pasos que se indican en Cómo ajustar la cantidad de programadores para establecer la cantidad necesaria de programadores para tu entorno.
gcloud
Sigue los pasos que se indican en Cómo ajustar la cantidad de programadores para establecer la cantidad necesaria de programadores para tu entorno.
En el siguiente ejemplo, se establece la cantidad de programadores en dos:
gcloud composer environments update example-environment \
--scheduler-count=2
Terraform
Sigue los pasos que se indican en Cómo ajustar la cantidad de programadores para establecer la cantidad necesaria de programadores para tu entorno.
En el siguiente ejemplo, se establece la cantidad de programadores en dos:
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
scheduler {
count = 2
}
}
}
}
Cambia la CPU y la memoria de los programadores
Los parámetros de CPU y memoria son para cada programador de tu entorno. Por ejemplo, si tu entorno tiene dos programadores, la capacidad total es el doble de la cantidad especificada de CPU y memoria.
Console
Sigue los pasos que se indican en Ajusta los parámetros de escala y rendimiento de trabajador, programador y servidor web para configurar la CPU y la memoria de los programadores.
gcloud
Sigue los pasos que se indican en Cómo ajustar los parámetros de escala y rendimiento de trabajador, programador y servidor web para configurar la CPU y la memoria de los programadores.
En el siguiente ejemplo, se cambia la CPU y la memoria de los programadores. Solo puedes especificar atributos de CPU o de memoria, según lo que necesites.
gcloud composer environments update example-environment \
--scheduler-cpu=0.5 \
--scheduler-memory=3.75
Terraform
Sigue los pasos que se indican en Ajusta los parámetros de escala y rendimiento de trabajador, programador y servidor web para configurar la CPU y la memoria de los programadores.
En el siguiente ejemplo, se cambia la CPU y la memoria de los programadores. Puedes omitir atributos de CPU o de memoria según sea necesario.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
scheduler {
cpu = "0.5"
memory_gb = "3.75"
}
}
}
}
Cambiar la cantidad máxima de trabajadores
Aumentar la cantidad máxima de trabajadores permite que tu entorno escale de forma automática a una mayor cantidad de trabajadores, si es necesario.
Disminuir la cantidad máxima de trabajadores reduce la capacidad máxima del entorno, pero también puede ser útil para reducir los costos del entorno.
Ejemplos:
Console
Sigue los pasos que se indican en Ajusta la cantidad mínima y máxima de trabajadores para establecer la cantidad máxima de trabajadores requerida para tu entorno.
gcloud
Sigue los pasos que se indican en Ajusta la cantidad mínima y máxima de trabajadores para establecer la cantidad máxima de trabajadores requerida para tu entorno.
En el siguiente ejemplo, se establece la cantidad máxima de trabajadores en seis:
gcloud composer environments update example-environment \
--max-workers=6
Terraform
Sigue los pasos que se indican en Ajusta la cantidad mínima y máxima de trabajadores para establecer la cantidad máxima de trabajadores requerida para tu entorno.
En el siguiente ejemplo, se establece la cantidad máxima de programadores en seis:
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
worker {
max_count = "6"
}
}
}
}
Cambia la CPU y la memoria del trabajador
Disminuir la memoria del trabajador puede ser útil cuando el gráfico de uso del trabajador indica un uso de memoria muy bajo.
El aumento de memoria de los trabajadores les permite manejar más tareas de forma simultánea o controlar tareas que consumen mucha memoria. Podría abordar el problema de las expulsiones del Pod de los trabajadores.
Disminuir la CPU del trabajador puede ser útil cuando el gráfico de uso de CPU del trabajador indica que los recursos de la CPU están altamente asignados.
El aumento de la CPU de trabajador permite que los trabajadores manejen más tareas de forma simultánea y, en algunos casos, reducen el tiempo que se tarda en procesar estas tareas.
Si cambias la CPU o la memoria del trabajador, se reinician los trabajadores, lo que podría afectar las tareas en ejecución. Te recomendamos que lo hagas cuando no se estén ejecutando ningún DAG.
Los parámetros de CPU y memoria son para cada trabajador de tu entorno. Por ejemplo, si tu entorno tiene cuatro trabajadores, la capacidad total es cuatro veces la cantidad especificada de CPU y memoria.
Console
Sigue los pasos que se indican en Ajusta los parámetros de escala y rendimiento de trabajador, programador y servidor web para configurar la CPU y la memoria de los trabajadores.
gcloud
Sigue los pasos que se indican en Ajusta los parámetros de escala y rendimiento de trabajador, programador y servidor web para configurar la CPU y la memoria de los trabajadores.
En el siguiente ejemplo, se cambia la CPU y la memoria de los trabajadores. Puedes omitir el atributo de CPU o memoria, si es necesario.
gcloud composer environments update example-environment \
--worker-memory=3.75 \
--worker-cpu=2
Terraform
Sigue los pasos que se indican en Ajusta los parámetros de escala y rendimiento de trabajador, programador y servidor web para configurar la CPU y la memoria de los trabajadores.
En el siguiente ejemplo, se cambia la CPU y la memoria de los trabajadores. Puedes omitir el parámetro de CPU o memoria si es necesario.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
worker {
cpu = "2"
memory_gb = "3.75"
}
}
}
}
Cambia la CPU y la memoria del servidor web
Disminuir la CPU o la memoria del servidor web puede ser útil cuando el gráfico de uso del servidor web indica que se usa poco de manera continua.
Si cambias los parámetros del servidor web, se reinicia el servidor web, lo que provoca un tiempo de inactividad temporal. Te recomendamos que realices cambios fuera de las horas de uso habituales.
Console
Sigue los pasos que se indican en Cómo ajustar los parámetros de escalamiento y rendimiento del trabajador, programador y servidor web para configurar la CPU y la memoria del servidor web.
gcloud
Sigue los pasos que se indican en Cómo ajustar los parámetros de escalamiento y rendimiento del trabajador, programador y servidor web para configurar la CPU y la memoria del servidor web.
En el siguiente ejemplo, se cambia la CPU y la memoria del servidor web. Puedes omitir atributos de CPU o memoria según la necesidad.
gcloud composer environments update example-environment \
--web-server-cpu=2 \
--web-server-memory=3.75
Terraform
Sigue los pasos que se indican en Cómo ajustar los parámetros de escalamiento y rendimiento del trabajador, programador y servidor web para configurar la CPU y la memoria del servidor web.
En el siguiente ejemplo, se cambia la CPU y la memoria del servidor web. Puedes omitir atributos de CPU o memoria según la necesidad.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
web_server {
cpu = "2"
memory_gb = "3.75"
}
}
}
}
Cambia el tamaño del entorno
Cambiar el tamaño del entorno modifica la capacidad de los componentes de backend de Cloud Composer, como la base de datos y la cola de Airflow.
- Considera cambiar el tamaño del entorno a un tamaño más pequeño (por ejemplo, grande a mediano o mediano a pequeño) cuando las métricas de uso de la base de datos muestran una infrautilización significativa.
Considera aumentar el tamaño del entorno si observas el alto uso de la base de datos de Airflow.
Console
Sigue los pasos que se indican en Ajusta el tamaño del entorno para configurar el tamaño del entorno.
gcloud
Sigue los pasos que se indican en Ajusta el tamaño del entorno para configurar el tamaño del entorno.
En el siguiente ejemplo, se cambia el tamaño del entorno a Media.
gcloud composer environments update example-environment \
--environment-size=medium
Terraform
Sigue los pasos que se indican en Ajusta el tamaño del entorno para configurar el tamaño del entorno.
En el siguiente ejemplo, se cambia el tamaño del entorno a Media.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
environment_size = "medium"
}
}
Cambia el intervalo de la lista del directorio de DAG
Aumentar el intervalo de enumeración del directorio de DAG reduce la carga del programador asociada con el descubrimiento de DAG nuevos en el bucket del entorno.
- Considera aumentar este intervalo si implementas DAG nuevos con poca frecuencia.
- Considera disminuir este intervalo si deseas que Airflow reaccione más rápido a los archivos DAG recién implementados.
Para cambiar este parámetro, anula la siguiente opción de configuración de Airflow:
Sección | Clave | Valor | Notas |
---|---|---|---|
scheduler |
dag_dir_list_interval |
Nuevo valor para el intervalo de la ficha | El valor predeterminado, en segundos, es 120 . |
Cambia el intervalo de análisis del archivo DAG
Aumentar el intervalo de análisis del archivo DAG reduce la carga del programador asociada con el análisis continuo de los DAG en la bolsa del DAG.
Considera aumentar este intervalo cuando tengas una gran cantidad de DAG que no cambien con demasiada frecuencia o cuando observes una carga alta del programador en general.
Para cambiar este parámetro, anula la siguiente opción de configuración de Airflow:
Sección | Clave | Valor | Notas |
---|---|---|---|
scheduler |
min_file_process_interval |
Valor nuevo para el intervalo de análisis del DAG | El valor predeterminado, en segundos, es 30 . |
Simultaneidad de trabajadores
El rendimiento de simultaneidad y la capacidad de ajuste de escala automático de tu entorno están conectados a los siguientes dos parámetros de configuración:
- la cantidad mínima de trabajadores de Airflow
- el parámetro
[celery]worker_concurrency
Los valores predeterminados que proporciona Cloud Composer son óptimos para la mayoría de los casos de uso, pero el entorno puede beneficiarse de los ajustes personalizados.
Consideraciones de rendimiento de la simultaneidad de trabajadores
El parámetro [celery]worker_concurrency
define la cantidad de tareas que un solo trabajador puede retirar de la lista de tareas en cola.
La velocidad de ejecución de las tareas depende de varios factores, como la CPU del trabajador, la memoria
y el tipo de trabajo en sí.
Ajuste de escala automático de trabajadores
Cloud Composer supervisa la lista de tareas en cola y genera trabajadores adicionales para
recoger las tareas en espera. Configurar [celery]worker_concurrency
en un valor alto significa que cada trabajador puede recoger muchas tareas, por lo que, en determinadas circunstancias, es posible que la cola nunca se llene, lo que hace que el ajuste de escala automático nunca se active.
Por ejemplo, en un entorno de Cloud Composer con dos trabajadores de Airflow,
[celery]worker_concurrency
establecido en 100 y tareas 200 en la cola,
cada trabajador recogería 100 tareas. Esto deja la cola vacía y no activa el ajuste de escala automático. Si estas tareas tardan mucho tiempo en completarse, podrían producirse problemas de rendimiento.
Pero si las tareas son pequeñas y rápidas de ejecutarse, un valor alto en la configuración [celery]worker_concurrency
podría generar un escalamiento excesivo.
Por ejemplo, si ese entorno tiene 300 tareas en la cola, Cloud Composer comienza a crear trabajadores nuevos. Sin embargo, si las primeras 200 tareas terminan la ejecución cuando los trabajadores nuevos están listos, un trabajador existente puede recogerlas. El resultado final es que el ajuste de escala automático crea trabajadores nuevos, pero no hay tareas para ellos.
El ajuste de [celery]worker_concurrency
para casos especiales debe basarse en los tiempos máximos de ejecución de tareas y los números de cola:
- En el caso de las tareas que tardan más en completarse, los trabajadores no deberían poder vaciar la cola por completo.
- Para realizar tareas más rápidas y pequeñas, aumenta la cantidad mínima de trabajadores de Airflow para evitar el escalamiento excesivo.
Sincronización de registros de tareas
Los trabajadores de Airflow cuentan con un componente que sincroniza los registros de ejecución de tareas con los buckets de Cloud Storage. Una gran cantidad de tareas simultáneas realizadas por un solo trabajador genera una gran cantidad de solicitudes de sincronización. Esto podría sobrecargar a tu trabajador y generar problemas de rendimiento.
Si observas problemas de rendimiento debido a una gran cantidad de tráfico de sincronización de registros, reduce los valores de [celery]worker_concurrency
y, en su lugar, ajusta la cantidad mínima de trabajadores de Airflow.
Cambia la simultaneidad de trabajadores
Si cambias este parámetro, se ajusta la cantidad de tareas que un solo trabajador puede ejecutar al mismo tiempo.
Por ejemplo, un trabajador con 0.5 CPU puede manejar 6 tareas simultáneas; un entorno con tres trabajadores de este tipo puede manejar hasta 18 tareas simultáneas.
Aumenta este parámetro cuando haya tareas en espera en la cola y tus trabajadores usen un porcentaje bajo de sus CPU y memoria al mismo tiempo.
Disminuye este parámetro cuando obtengas expulsiones de Pods; esto reducirá la cantidad de tareas que un solo trabajador intenta procesar. Como alternativa, puedes aumentar la memoria de trabajador.
El valor predeterminado para la simultaneidad de trabajadores es igual al siguiente:
- En Airflow 2.6.3 y versiones posteriores, un valor mínimo de
32
,12 * worker_CPU
y6 * worker_memory
. - En las versiones de Airflow anteriores a la 2.6.3, un valor mínimo de
32
,12 * worker_CPU
y8 * worker_memory
. - En versiones de Airflow anteriores a la 2.3.3,
12 * worker_CPU
.
El valor worker_CPU
es la cantidad de CPU asignadas a un solo trabajador. El valor worker_memory
es la cantidad de memoria asignada a un solo trabajador. Por ejemplo, si los trabajadores de tu entorno usan 0.5 CPU y 4 GB de memoria cada uno, la simultaneidad de trabajadores se establece en 6
. El valor de simultaneidad de trabajadores
no depende de la cantidad de trabajadores en tu entorno.
Para cambiar este parámetro, anula la siguiente opción de configuración de Airflow:
Sección | Clave | Valor |
---|---|---|
celery |
worker_concurrency |
Valor nuevo para la simultaneidad de trabajadores |
Cambia la simultaneidad del DAG
La simultaneidad del DAG define la cantidad máxima de instancias de tareas que se pueden ejecutar de forma simultánea en cada DAG. Auméntala cuando tus DAG ejecuten una gran cantidad de tareas simultáneas. Si esta configuración es baja, el programador retrasa la colocación de más tareas en la cola, lo que también reduce la eficiencia del ajuste de escala automático del entorno.
Para cambiar este parámetro, anula la siguiente opción de configuración de Airflow:
Sección | Clave | Valor | Notas |
---|---|---|---|
core |
max_active_tasks_per_dag |
Valor nuevo para la simultaneidad de DAG | El valor predeterminado es 16 . |
Aumentar la cantidad máxima de ejecuciones activas por DAG
Este atributo define la cantidad máxima de ejecuciones activas de DAG por DAG. Cuando el mismo DAG debe ejecutarse varias veces de forma simultánea, por ejemplo, con diferentes argumentos de entrada, este atributo permite que el programador inicie esas ejecuciones en paralelo.
Para cambiar este parámetro, anula la siguiente opción de configuración de Airflow:
Sección | Clave | Valor | Notas |
---|---|---|---|
core |
max_active_runs_per_dag |
Valor nuevo para la cantidad máxima de ejecuciones activas por DAG | El valor predeterminado es 25 . |
¿Qué sigue?
- Escalar entornos
- Acerca del escalamiento de entornos
- Anular las opciones de configuración de Airflow
- Supervisa el estado y el rendimiento del entorno con métricas clave