Otimizar os custos e o desempenho do ambiente

Cloud Composer 1 | Cloud Composer 2

Nesta página, explicamos como ajustar os parâmetros de escalonamento e desempenho do seu ambiente às necessidades do seu projeto, para que você consiga um melhor desempenho e reduza os custos dos recursos que não são utilizados pelo seu ambiente.

Outras páginas sobre escalonamento:

Visão geral do processo de otimização

Fazer alterações nos parâmetros do ambiente pode afetar muitos aspectos do desempenho. Recomendamos otimizar o ambiente nas iterações:

  1. Comece com as predefinições de ambiente.
  2. Execute os DAGs.
  3. Observe o desempenho do ambiente.
  4. Ajuste a escala do ambiente e os parâmetros de desempenho. Depois, repita as etapas anteriores.

Começar com predefinições de ambiente

Ao criar um ambiente no Console do Google Cloud, é possível selecionar uma das três predefinições de ambiente. Essas predefinições definem a configuração inicial de escalonamento e desempenho do ambiente. Depois de criar o ambiente, é possível alterar todos os parâmetros de escala e desempenho fornecidos por uma predefinição.

Recomendamos começar com uma das predefinições, com base nas seguintes estimativas:

  • Número total de DAGs que você planeja implantar no ambiente
  • Número máximo de execuções simultâneas de DAGs
  • Número máximo de tarefas simultâneas

O desempenho do ambiente depende da implementação de DAGs específicos executados no ambiente. Veja na tabela a seguir as estimativas baseadas no consumo médio de recursos. Se você espera que seus DAGs consumam mais recursos, ajuste as estimativas conforme necessário.

Predefinição recomendada Total de DAGs Máximo de execuções simultâneas de DAG Máximo de tarefas simultâneas
Pequeno 50 15 18
Média 250 60 100
Grande 1000 250 400

Por exemplo, um ambiente precisa executar 40 DAGs. Todos os DAGs precisam ser executados ao mesmo tempo, com uma tarefa ativa cada. Esse ambiente usaria uma predefinição média, porque o número máximo de execuções simultâneas de DAGs e tarefas excede as estimativas recomendadas para a predefinição pequena.

Executar seus DAGs

Depois que seu ambiente for criado, faça upload dos DAGs para ele. Execute seus DAGs e observe o desempenho do ambiente.

Recomendamos executar os DAGs em uma programação que reflita a aplicação real dos DAGs. Por exemplo, se você quiser executar vários DAGs ao mesmo tempo, verifique o desempenho do seu ambiente quando todos esses DAGs estão sendo executados simultaneamente.

Observar o desempenho do seu ambiente

Esta seção se concentra nos aspectos mais comuns de ajuste de desempenho e capacidade do Cloud Composer 2. Recomendamos seguir este guia passo a passo, porque as considerações de desempenho mais comuns são abordadas primeiro.

Acessar o painel do Monitoring

É possível monitorar as métricas de desempenho do ambiente no painel do Monitoring.

Para acessar o painel do Monitoring do seu ambiente:

  1. No Console do Google Cloud, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Clique no nome do seu ambiente.

  3. Acesse a guia Monitoramento.

Monitorar as métricas de CPU e memória do programador

As métricas de CPU e memória do programador do Airflow ajudam a verificar se o desempenho do programador é um gargalo no desempenho geral do Airflow.

Gráficos para programadores de Ariflow
Figura 1. Gráficos para programadores do Airflow (clique para ampliar)

No painel do Monitoring, na seção Programadores, observe os gráficos dos programadores do Airflow do seu ambiente:

  • Uso total de CPU pelos programadores
  • Uso total de memória pelos programadores

Ajuste de acordo com suas observações:

Monitorar o tempo total de análise de todos os arquivos DAG

Os programadores analisam DAGs antes de programar execuções do DAG. Se a análise dos DAGs demorar muito, isso consumirá a capacidade do programador e poderá reduzir o desempenho das execuções do DAG.

Gráfico de tempo total de análise do DAG
Figura 2. Gráfico de tempo de análise do DAG (clique para ampliar)

No painel do Monitoring, na seção Execuções do DAG, observe os gráficos do tempo total de análise do DAG.

Se o número exceder cerca de 10 segundos, seus programadores estarão sobrecarregados com a análise do DAG e não poderão executar DAGs de maneira eficaz. A frequência padrão de análise de DAGs no Airflow é de 30 segundos; se o tempo de análise do DAG exceder esse limite, os ciclos de análise começam a se sobrepor, o que esgota a capacidade do programador.

De acordo com as observações, convém:

Monitorar remoções de pods de workers

A remoção de pods pode acontecer quando um determinado pod no cluster do ambiente atinge os limites de recursos.

Gráfico de remoções do pod de worker
Figura 3. Gráfico que exibe remoções de pods de workers (clique para ampliar)

Se um pod de worker do Airflow for removido, todas as instâncias de tarefas em execução nele serão interrompidas e, posteriormente, marcadas como com falha pelo Airflow.

A maioria dos problemas com remoções de pods de workers acontece devido a situações de falta de memória nos workers.

Na seção Workers do painel do Monitoring, observe os gráficos de pods de workers para seu ambiente.

O gráfico Uso total de memória de workers mostra uma perspectiva total do ambiente. Um único worker ainda pode exceder o limite de memória, mesmo que a utilização da memória esteja íntegra no nível do ambiente.

De acordo com as observações, convém:

Monitorar workers ativos

O número de workers no ambiente é escalonado automaticamente em resposta às tarefas na fila.

Trabalhadores ativos e gráficos de tarefas na fila
Figura 4. Trabalhadores ativos e gráficos de tarefas na fila (clique para ampliar)

No painel do Monitoring, na seção Workers, observe os gráficos do número de workers ativos e o número de tarefas na fila:

  • Workers ativos
  • Tarefas em execução e na fila

Ajuste de acordo com suas observações:

  • Se o ambiente atinge frequentemente o limite máximo de workers e, ao mesmo tempo, o número de tarefas na fila é continuamente alto, convém aumentar o número máximo de workers. de dados.
  • Se houver longos atrasos de programação entre tarefas, mas ao mesmo tempo o ambiente não for escalonado para o número máximo de workers, provavelmente há uma configuração do Airflow que limita o ambiente. e impede que mecanismos do Cloud Composer escalone o ambiente. Como os ambientes do Cloud Composer 2 são escalonados com base no tamanho da fila, configure o Airflow para não limitar tarefas a caminho:

    • Aumente a simultaneidade do worker. A simultaneidade do worker precisa ser definida como um valor maior que o número máximo esperado de tarefas simultâneas, dividido pelo número máximo de workers no ambiente.
    • Aumente a simultaneidade do DAG, se um único DAG estiver executando um grande número de tarefas em paralelo, o que pode fazer com que você atinja o número máximo de instâncias de tarefa em execução por DAG.
    • Aumentar o máximo de execuções ativas por DAG, se você executar o mesmo DAG várias vezes em paralelo, o que pode levar à limitação do Airflow porque a quantidade máxima de execuções ativas por DAG é alcançado.

Monitorar o uso de CPU e memória dos workers

Monitore o uso total de CPU e memória agregado em todos os workers do ambiente para determinar se os workers do Airflow usam os recursos do ambiente corretamente.

Gráficos de CPU e memória de workers
Figura 5. Gráficos de CPU e memória dos workers (clique para ampliar)

No painel do Monitoring, na seção Workers, observe os gráficos de uso da CPU e da memória pelos workers do Airflow:

  • Uso total da CPU pelos workers
  • Uso total da memória de workers

Este gráfico representa o uso de recursos agregados, workers individuais ainda podem alcançar os limites de capacidade, mesmo que a visualização agregada mostre a capacidade extra.

Ajuste de acordo com suas observações:

Monitorar tarefas em execução e na fila

É possível monitorar o número de tarefas enfileiradas e em execução para verificar a eficiência do processo de programação.

Gráfico que exibe tarefas em execução e na fila
Figura 6. Gráfico que exibe tarefas em execução e na fila (clique para ampliar)

Na seção Workers do painel do Monitoring, observe o gráfico Tarefas em execução e na fila do seu ambiente.

As tarefas na fila estão aguardando para serem executadas pelos workers. Se o ambiente tiver tarefas enfileiradas, isso pode significar que os workers do ambiente estão ocupados executando outras tarefas.

Algumas filas estão sempre presentes em um ambiente, especialmente durante picos de processamento. No entanto, se você observar um alto número de tarefas na fila ou uma tendência crescente no gráfico, isso pode indicar que os workers não têm capacidade suficiente para processar as tarefas ou que o Airflow está acelerado. execução de tarefas.

Geralmente, um alto número de tarefas em fila é observado quando o número de tarefas em execução também atinge o nível máximo.

Para solucionar os dois problemas, faça o seguinte:

Monitorar o uso de CPU e memória do banco de dados

Problemas de desempenho do banco de dados do Airflow podem levar a problemas gerais de execução do DAG. O uso do disco do banco de dados geralmente não é uma preocupação porque o armazenamento é estendido automaticamente conforme necessário.

Gráficos de CPU e memória do banco de dados
Figura 7. Gráficos de CPU e memória do banco de dados (clique para ampliar)

No painel do Monitoring, na seção Workers, observe os gráficos de uso da CPU e da memória pelo banco de dados do Airflow:

  • Uso de CPU do banco de dados
  • Uso da memória do banco de dados

Se o uso de CPU do banco de dados exceder 80% por mais de alguns% do tempo total, o banco de dados estará sobrecarregado e exigirá escalonamento.

Essas configurações são controladas pela propriedade de tamanho do ambiente. Para fazer isso, altere o tamanho do ambiente para um nível diferente (pequeno, médio ou grande). Aumentar o tamanho do ambiente aumenta os custos dele.

Monitorar a latência da programação de tarefas

Se a latência entre as tarefas exceder os níveis esperados (por exemplo, 20 segundos ou mais), isso pode indicar que o ambiente não pode processar a carga de tarefas geradas pelas execuções de DAG.

Gráfico de latência da tarefa (IU do Airflow)
Figura 8. Gráfico de latência da tarefa, IU do Airflow (clique para ampliar)

É possível visualizar o gráfico de latência da programação de tarefas na IU do Airflow do seu ambiente.

Nesse exemplo, atrasos (2,5 e 3,5 segundos) estão dentro dos limites aceitáveis, mas latências significativamente maiores podem indicar que:

Monitorar a CPU e a memória do servidor da Web

O desempenho do servidor da Web do Airflow afeta a IU do Airflow. Não é comum que o servidor da Web seja sobrecarregado. Se isso acontecer, o desempenho da IU do Airflow poderá deteriorar, mas isso não afetará as execuções do DAG.

Gráficos de memória e CPU do servidor da Web
Figura 9. Gráficos de memória e CPU do servidor da Web (clique para ampliar)

No painel do Monitoring, na seção Servidor da Web, observe os gráficos do servidor da Web do Airflow:

  • Uso de CPU do servidor da Web
  • Uso da memória do servidor da Web

Com base nas suas observações:

Ajustar os parâmetros de escalonamento e desempenho do ambiente

Alterar o número de programadores

Ajustar o número de programadores melhora a capacidade do programador e a resiliência da programação do Airflow.

Exemplos:

Console

Siga as etapas em Ajustar o número de programadores para definir o número necessário de programadores para seu ambiente.

gcloud

Siga as etapas em Ajustar o número de programadores para definir o número necessário de programadores para seu ambiente.

O exemplo a seguir define o número de programadores como dois:

gcloud composer environments update example-environment \
    --scheduler-count=2

Terraform

Siga as etapas em Ajustar o número de programadores para definir o número necessário de programadores para seu ambiente.

O exemplo a seguir define o número de programadores como dois:

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      scheduler {
        count = 2
      }
    }
  }
}

Como alterar a CPU e a memória para programadores

Os parâmetros de CPU e memória são para cada programador no ambiente. Por exemplo, se seu ambiente tiver dois programadores, a capacidade total será duas vezes o número especificado de CPU e memória.

Console

Siga as etapas em Ajustar os parâmetros de escalonamento e desempenho do worker, programador e servidor da Web para definir a CPU e a memória para os programadores.

gcloud

Siga as etapas em Ajustar os parâmetros de desempenho e escalonamento do worker, programador e servidor da Web para definir a CPU e a memória para programadores.

O exemplo a seguir altera a CPU e a memória dos programadores. Só é possível especificar atributos de CPU ou memória, dependendo da necessidade.

gcloud composer environments update example-environment \
  --scheduler-cpu=0.5 \
  --scheduler-memory=3.75

Terraform

Siga as etapas em Ajustar os parâmetros de escalonamento e desempenho do worker, programador e servidor da Web para definir a CPU e a memória para os programadores.

O exemplo a seguir altera a CPU e a memória dos programadores. É possível omitir atributos de CPU ou memória, dependendo da necessidade.

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      scheduler {
        cpu = "0.5"
        memory_gb = "3.75"
      }
    }
  }
}

Alterar o número máximo de workers

Aumentar o número máximo de workers permite que o ambiente seja escalonado automaticamente para um número maior de workers, se necessário.

Diminuir o número máximo de workers reduz a capacidade máxima do ambiente, mas também pode ser útil para reduzir os custos do ambiente.

Exemplos:

Console

Siga as etapas em Ajustar o número mínimo e máximo de workers para definir o número máximo necessário para o ambiente.

gcloud

Siga as etapas em Ajustar o número mínimo e máximo de workers para definir o número máximo necessário para o ambiente.

O exemplo a seguir define o número máximo de workers como seis:

gcloud composer environments update example-environment \
    --max-workers=6

Terraform

Siga as etapas em Ajustar o número mínimo e máximo de workers para definir o número máximo necessário para o ambiente.

O exemplo a seguir define o número máximo de programadores como seis:

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      worker {
        max_count = "6"
      }
    }
  }
}

Alterar CPU e memória do worker

  • Isso pode ser útil quando o gráfico de uso do worker indica uma utilização de memória muito baixa.

  • O aumento da memória do worker permite que os workers gerenciem mais tarefas ao mesmo tempo ou que façam uso intensivo da memória. Isso pode resolver o problema de remoções de pods de workers.

  • Diminuir a CPU do worker pode ser útil quando o gráfico de uso da CPU do worker indica que os recursos da CPU estão altamente alocados.

  • O aumento da CPU permite que os workers processem mais tarefas simultaneamente e, em alguns casos, reduza o tempo necessário para processar essas tarefas.

Alterar a CPU ou a memória do worker reinicia os workers, o que pode afetar as tarefas em execução. Recomendamos fazer isso quando nenhum DAG está em execução.

Os parâmetros de CPU e memória são para cada worker no ambiente. Por exemplo, se o ambiente tiver quatro workers, a capacidade total será quatro vezes o número especificado de CPU e memória.

Console

Siga as etapas em Ajustar os parâmetros de escalonamento e desempenho do worker, programador e servidor da Web para definir a CPU e a memória para os workers.

gcloud

Siga as etapas em Ajustar os parâmetros de desempenho e escalonamento do worker, programador e servidor da Web para definir a CPU e a memória dos workers.

O exemplo a seguir altera a CPU e a memória dos workers. É possível omitir o atributo de CPU ou memória, se necessário.

gcloud composer environments update example-environment \
  --worker-memory=3.75 \
  --worker-cpu=2

Terraform

Siga as etapas em Ajustar os parâmetros de escalonamento e desempenho do worker, programador e servidor da Web para definir a CPU e a memória para os workers.

O exemplo a seguir altera a CPU e a memória dos workers. É possível omitir o parâmetro de CPU ou memória, se necessário.

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      worker {
        cpu = "2"
        memory_gb = "3.75"
      }
    }
  }
}

Alterar a CPU e a memória do servidor da Web

Diminuir a CPU ou a memória do servidor da Web pode ser útil quando o gráfico de uso do servidor da Web indica que ele está sendo subutilizado continuamente.

Alterar os parâmetros do servidor da Web reinicia o servidor da Web, causando uma inatividade temporária do servidor. Recomendamos que você faça alterações fora desse período.

Console

Siga as etapas em Ajustar parâmetros de escala e desempenho do worker, programador e servidor da Web para definir a CPU e a memória para o servidor da Web.

gcloud

Siga as etapas em Ajustar os parâmetros de desempenho e escalonamento de worker, programador e servidor da Web para definir a CPU e a memória para o servidor da Web.

O exemplo a seguir altera a CPU e a memória do servidor da Web. É possível omitir atributos de CPU ou memória, dependendo da necessidade.

gcloud composer environments update example-environment \
    --web-server-cpu=2 \
    --web-server-memory=3.75

Terraform

Siga as etapas em Ajustar parâmetros de escala e desempenho do worker, programador e servidor da Web para definir a CPU e a memória para o servidor da Web.

O exemplo a seguir altera a CPU e a memória do servidor da Web. É possível omitir atributos de CPU ou memória, dependendo da necessidade.

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    workloads_config {
      web_server {
        cpu = "2"
        memory_gb = "3.75"
      }
    }
  }
}

Alterar o tamanho do ambiente

Alterar o tamanho do ambiente modifica a capacidade dos componentes de back-end do Cloud Composer, como o banco de dados e a fila do Airflow.

  • Considere alterar o tamanho do ambiente para um tamanho menor (por exemplo, grande, médio ou médio) quando as métricas de uso do banco de dados mostrarem uma subutilização significativa.
  • Aumente o tamanho do ambiente se você observar o alto uso do banco de dados do Airflow.

Console

Siga as etapas em Ajustar o tamanho do ambiente.

gcloud

Siga as etapas em Ajustar o tamanho do ambiente.

O exemplo a seguir altera o tamanho do ambiente para Média.

gcloud composer environments update example-environment \
    --environment-size=medium

Terraform

Siga as etapas em Ajustar o tamanho do ambiente.

O exemplo a seguir altera o tamanho do ambiente para Média.

resource "google_composer_environment" "example-environment" {

  # Other environment parameters

  config {
    environment_size = "medium"
  }
}

Como alterar o intervalo da listagem do diretório do DAG

Aumentar o intervalo de listagem do diretório do DAG reduz a carga do programador associada à descoberta de novos DAGs no bucket do ambiente.

  • Aumente esse intervalo se você não implantar novos DAGs com frequência.
  • Diminua esse intervalo se quiser que o Airflow reaja mais rapidamente aos arquivos DAG recém-implantados.

Para alterar esse parâmetro, modifique a seguinte opção de configuração do Airflow:

Seção Chave Valor Observações
scheduler dag_dir_list_interval Novo valor para o intervalo da ficha da empresa. O valor padrão, em segundos, é 300.

Como alterar o intervalo de análise do arquivo DAG

Aumentar o intervalo de análise de arquivos do DAG reduz a carga do programador associada à análise contínua de DAGs no pacote do DAG.

Aumente esse intervalo quando você tiver um número alto de DAGs que não mudam com muita frequência ou observar uma carga alta do programador em geral.

Para alterar esse parâmetro, modifique a seguinte opção de configuração do Airflow:

Seção Chave Valor Observações
scheduler min_file_process_interval Novo valor para o intervalo de análise do DAG O valor padrão, em segundos, é 30.

Alterar a simultaneidade do worker

Alterar esse parâmetro ajusta o número de tarefas que um único worker pode executar ao mesmo tempo.

Por exemplo, um worker com 0,5 CPU normalmente pode processar seis tarefas simultâneas.Um ambiente com três workers desse tipo pode processar até 18 tarefas simultâneas.

  • Aumente esse parâmetro quando houver tarefas aguardando na fila e seus workers usarem uma porcentagem baixa de CPUs e memória ao mesmo tempo.

  • Diminuir esse parâmetro quando estiver recebendo remoções de pod; isso reduziria o número de tarefas que um único worker tenta processar. Como alternativa, aumente a memória do worker.

O valor padrão da simultaneidade do worker é igual a 12 * worker_CPU, em que worker_CPU é o número de CPUs alocadas a um único worker. Por exemplo, se os workers do ambiente usarem 0,5 CPU cada, a simultaneidade do worker padrão será 6. Esse valor não depende do número de workers no ambiente.

Para alterar esse parâmetro, modifique a seguinte opção de configuração do Airflow:

Seção Chave Valor Observações
celery worker_concurrency Novo valor para simultaneidade do worker O valor padrão é igual a 12 * worker_CPU para seu ambiente

Alterar a simultaneidade do DAG

A simultaneidade do DAG define o número máximo de instâncias de tarefa que podem ser executadas simultaneamente em cada DAG. Aumente-a quando seus DAGs executarem um grande número de tarefas simultâneas. Se essa configuração for baixa, o programador atrasará colocar mais tarefas na fila, o que também reduz a eficiência do escalonamento automático do ambiente.

Para alterar esse parâmetro, modifique a seguinte opção de configuração do Airflow:

Seção Chave Valor Observações
core max_active_tasks_per_dag Novo valor para simultaneidade do DAG O valor padrão é 100

Aumentar o máximo de execuções ativas por DAG

Esse atributo define o número máximo de execuções ativas de DAGs por DAG. Quando o mesmo DAG precisa ser executado várias vezes ao mesmo tempo, por exemplo, com diferentes argumentos de entrada, esse atributo permite que o programador inicie essas execuções em paralelo.

Para alterar esse parâmetro, modifique a seguinte opção de configuração do Airflow:

Seção Chave Valor Observações
core max_active_runs_per_dag Novo valor para o máximo de execuções ativas por DAG O valor padrão é 25

A seguir