AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Como resolvo o erro "psycopg2.OperationalError: SSL connection has been closed unexpectedly error" no Amazon MWAA?
Quero solucionar o erro "psycopg2.OperationalError: SSL connection has been closed unexpectedly" no Amazon Managed Workflows for Apache Airflow (Amazon MWAA).
Breve descrição
Quando você executa seu grafo acíclico dirigido (DAG) e uma tarefa falha, pode receber as seguintes mensagens de erro no log da tarefa:
- "psycopg2.OperationalError: SSL connection has been closed unexpectedly".
- "sqlalchemy.exc.OperationalError: (psycopg2.errors.ConnectionException) Timed-out waiting to acquire database connection".
As mensagens de erro anteriores ocorrem quando o processamento sobrecarrega ou perde a conexão com o banco de dados de metadados, ou quando a tarefa tenta reutilizar uma conexão de banco de dados fechada.
Para resolver esse problema, realize as seguintes ações:
- Reduza a utilização de CPU e memória.
- Verifique as configurações dos seus processamentos.
- Use operadores adiáveis.
- Remova o código de nível superior.
- Não use variáveis do Apache Airflow.
- Simplifique seu DAG.
- Crie um arquivo .airflowignore e adicione-o à pasta principal do DAG no Amazon Simple Storage Service (Amazon S3).
Resolução
Reduza a utilização de CPU e memória
Um agendador, processamento ou servidor da web sobrecarregado talvez não consiga manter conexões ativas com o banco de dados. O tempo limite padrão de conexão ociosa para o Amazon Relational Database Service (Amazon RDS) para metadados do Apache Airflow é de 30 minutos. Se uma tarefa ou processo permanecer inativo ou sem resposta por mais tempo do que esse período, o banco de dados pode encerrar a conexão. Para obter mais informações, consulte IdleClientTimeout.
Para verificar as métricas de utilização de CPU e memória, conclua as seguintes etapas:
- Abra o console do Amazon CloudWatch.
- Selecione o namespace AWS/MWAA.
- Na guia Todas as métricas, clique em Cluster.
- Selecione CPUUtilization e, em seguida, Representar em gráfico todos os resultados da pesquisa.
- Clique na guia Métricas em gráficos para visualizar as métricas de desempenho.
- Repita as etapas de 1 a 3 e, em seguida, selecione MemoryUtilization.
- Clique em Representar em gráfico todos os resultados da pesquisa e, em seguida, selecione a guia Métricas em gráficos para visualizar as métricas de desempenho.
Observação: você deve selecionar Máximo para Estatística e 1 minuto para Período.
Para obter mais informações, consulte Métricas de contêiner, fila e banco de dados para Amazon MWAA.
Se a utilização de CPU e memória dos seus processamentos estiver consistentemente acima de 90%, isso quer dizer que eles estão sobrecarregados ou que as tarefas são muito pesadas. O uso excessivo de CPU e memória pode causar problemas com relatórios de status de tarefas, comunicação com bancos de dados de metadados e novas tarefas.
Para reduzir a utilização de CPU e memória dos processamentos, realize as seguintes ações:
- Como os processamentos precisam de mais recursos durante as fases iniciais da criação de tarefa, distribua suas programações de tarefas.
- Limite suas importações apenas às tarefas que precisam delas e remova as importações globais que não são necessárias.
- Use o Apache Airflow e o Amazon MWAA como suas principais ferramentas. Programe suas tarefas restantes em serviços como o Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Container Service (Amazon ECS) ou AWS Glue.
Observação: não processe grandes volumes de dados em processamentos porque eles têm recursos limitados. Use serviços específicos para processar grandes volumes de dados. - Reduza os dados que são passados entre as tarefas. Quando possível, fragmente os dados para que os dados downstream não sejam alterados devido à sobrecarga dos workloads do Amazon MWAA.
Observação: se você precisar passar grandes volumes de dados entre tarefas, armazene os dados externamente e importe-os conforme necessário. Alguns operadores usam XComs. Para obter mais informações, consulte XComs no site do Apache Airflow. - Limpe regularmente o banco de dados de metadados.
Observação: a utilização excessiva de CPU ou pouca memória livre podem causar falhas nas consultas ou aumentar a latência, resultando em um erro de exceção de SSL.
Observação: se não for possível reduzir a CPU, use uma classe do ambiente maior com mais recursos para os processamentos ou ajuste ainda mais seus processamentos.
Verifique as configurações dos seus processamentos
Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Cada versão do Apache Airflow tem valores padrão para configurações de processamento. No entanto, talvez seja necessário personalizar as configurações com base nos seus requisitos.
Defina as configurações do seu Apache Airflow
Use o console do Amazon MWAA, o comando update-environment da AWS CLI ou uma chamada de API UpdateEnvironment para personalizar as seguintes configurações:
- A configuração celery.worker_autoscale controla o número máximo e mínimo de tarefas que podem ser executadas simultaneamente em um processamento. Reduza o máximo de conexões de banco de dados do processamento. Em seguida, aloque mais recursos para cada tarefa para um número menor de tarefas com os mesmos recursos de processamento.
- Defina core.execute_tasks_new_python_interpreter como True para criar um novo interpretador Python para cada tarefa e isolar a conectividade do banco de dados.
Observação: defina a configuração como True somente se o erro "psycopg2.OperationalError" aparecer. - Use o atributo de ajuste de escala automático no Amazon MWAA para aumentar a contagem máxima de processamentos.
Observação: defina os valores max-workers e celery.worker_autoscale para acomodar seu workload.
Para obter mais informações, consulte Como usar opções de configuração do Apache Airflow no Amazon MWAA.
Verifique seus logs de processamento, agendador e servidor da web
Em ambientes de produção, o registro em log detalhado usa recursos desnecessários e aumenta a utilização de CPU. É uma prática recomendada definir os logs de processamento, agendador e servidor da web como pelo menos WARNING. Na maioria dos casos, os logs INFO não são necessários.
Use operadores adiáveis
Use operadores adiáveis quando suas tarefas enviarem trabalhos para sistemas ou serviços externos e aguardarem a ocorrência de eventos, como a criação de um cluster do EMR. Operadores adiáveis liberam slots de processamento e aumentam a capacidade do workload. Para obter mais informações, consulte Deferrable operators & triggers (Operadores e gatilhos adiáveis) no site do Apache Airflow.
Remova o código de nível superior
Remova o código de nível superior que usa recursos desnecessários do agendador. Além disso, ajuste a configuração dag_processor.min_file_process_interval conforme seu caso de uso. Para obter mais informações, consulte min_file_process_interval e Best practices (Práticas recomendadas) no site do Apache Airflow.
Não use variáveis do Apache Airflow
Não use variáveis do Apache Airflow no código Python de nível superior. Ao recuperar variáveis, você deve consultar o banco de dados e a consulta ocorre em cada loop de análise.
Observação: se precisar usar variáveis, use o armazenamento em cache de variáveis. Para obter mais informações, consulte use_cache no site do Apache Airflow.
Simplifique seu DAG
Simplifique seu DAG e teste o código do seu DAG para a versão específica do Python do seu ambiente do Amazon MWAA.
Use o mapeamento dinâmico de tarefas quando necessário. Para obter mais informações, consulte Dynamic task mapping (Mapeamento dinâmico de tarefas) no site do Apache Airflow.
Crie um arquivo .airflowignore e adicione-o à pasta principal do DAG no Amazon S3
O agendador do Apache Airflow sincroniza o conteúdo da pasta do DAG do Amazon S3 para cada processamento. Além disso, o agendador analisa periodicamente os arquivos no Amazon S3 para atualizar a interface do usuário. Ao analisar, o agendador executa os arquivos e gera os DAGs.
Use o arquivo .airflowignore para especificar as pastas e os arquivos da pasta do DAG no Amazon S3. Você deve usar padrões regex e glob. Ignore os arquivos que não são do DAG durante o processo de análise para reduzir a carga do agendador no agendador e melhorar a eficiência do DAG. Para obter mais informações, consulte .airfowignore no site do Apache Airflow.
- Tópicos
- Application Integration
- Idioma
- Português

Conteúdo relevante
feita há um ano
feita há um ano
- Resposta aceita
feita há um ano