¿Cómo soluciono el error «Psycopg2.Operational: SSL connection has been closed unexpectedly error» en Amazon MWAA?
Quiero solucionar el error «Psycopg2.OperationalError: SSL connection has been closed unexpectedly» en Amazon Managed Workflows para Apache Airflow (Amazon MWAA).
Descripción corta
Cuando ejecutas el gráfico acíclico dirigido (DAG) y se produce un error en una tarea, es posible que recibas los siguientes mensajes de error en el registro de tareas:
- «psycopg2.OperationalError: SSL connection has been closed unexpectedly».
- «sqlalchemy.exc.OperationalError: (psycopg2.errors.ConnectionException) Timed-out waiting to acquire database connection».
Los mensajes de error anteriores se producen cuando el trabajador sobrecarga o pierde la conexión con la base de datos de metadatos, o cuando la tarea intenta reutilizar una conexión de base de datos cerrada.
Para solucionar este problema, toma las siguientes medidas:
- Reduce la utilización de la CPU y la memoria.
- Comprueba las configuraciones de los trabajadores.
- Utiliza operadores diferibles.
- Elimina el código de nivel superior.
- No utilices variables de Apache Airflow.
- Simplifica tu DAG.
- Crea un archivo .airflowignore y agrégalo a la carpeta DAG principal de Amazon Simple Storage Service (Amazon S3).
Resolución
Reducción de la utilización de la CPU y la memoria
Es posible que un programador, un servidor de trabajo o un servidor web sobrecargados no puedan mantener las conexiones de base de datos activas. El tiempo de espera predeterminado de la conexión inactiva para los metadatos de Amazon Relational Database Service (Amazon RDS) para Apache Airflow es de 30 minutos. Si una tarea o un proceso permanecen inactivos o no responden durante más tiempo que este periodo, es posible que la base de datos cierre la conexión. Para obtener más información, consulta IdleClientTimeout.
Para comprobar las métricas de uso de la CPU y la memoria, sigue estos pasos:
- Abre la consola de Amazon CloudWatch.
- Elige el espacio de nombres AWS/MWAA.
- En la pestaña Todas las métricas, elige Clúster.
- Elige CPUUtilization y, a continuación, elige Crear gráficos con todos los resultados de la búsqueda.
- Selecciona la pestaña Métricas diagramadas para ver las métricas de rendimiento.
- Repite los pasos 1 a 3 y, a continuación, selecciona MemoryUtilization.
- Selecciona Crear gráficos con todos los resultados de la búsqueda y, a continuación, elige la pestaña Métricas diagramadas para ver las métricas de rendimiento.
Nota: Debes seleccionar Máximo para Estadística y 1 minuto como Período.
Para obtener más información, consulta Métricas de contenedores, colas y bases de datos para Amazon MWAA.
Si el uso de la CPU y la memoria de los trabajadores supera constantemente el 90 %, los trabajadores están sobrecargados o las tareas son demasiado pesadas. El uso excesivo de la CPU y la memoria puede provocar problemas con los informes de estado de las tareas, la comunicación con la base de datos de metadatos y las tareas nuevas.
Para reducir la utilización de la CPU y la memoria de los trabajadores, toma las siguientes medidas:
- Dado que los trabajadores requieren más recursos durante las fases iniciales de la creación de tareas, distribuye las programaciones de las tareas.
- Limita las importaciones a solo las tareas que las requieran y elimina las importaciones globales que no sean obligatorias.
- Utiliza Apache Airflow y Amazon MWAA como herramientas principales. Programa las tareas restantes en servicios como Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Container Service (Amazon ECS) o AWS Glue.
Nota: No proceses grandes volúmenes de datos sobre los trabajadores porque tienen recursos limitados. Utiliza servicios diseñados para procesar grandes volúmenes de datos. - Reduce los datos que se transfieren entre tareas. Cuando sea posible, fragmenta los datos para que los datos posteriores no cambien debido a la sobrecarga de las cargas de trabajo de Amazon MWAA.
Nota: Si debes transferir grandes volúmenes de datos entre tareas, almacena los datos externamente e impórtalos según sea necesario. Algunos operadores usan XCom. Para obtener más información, consulta XComs en el sitio web de Apache Airflow. - Limpia regularmente la base de datos de metadatos.
Nota: El uso elevado de la CPU o la poca memoria libre pueden provocar errores en las consultas o aumentar la latencia, lo que provoca un error de excepción de SSL.
Nota: Si no puedes reducir la CPU, utiliza una clase de entorno más grande con más recursos para los trabajadores o perfecciona aún más tus trabajadores.
Comprobación de las configuraciones de los trabajadores
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Cada versión de Apache Airflow tiene valores predeterminados para las configuraciones de los trabajadores. Sin embargo, es posible que debas personalizar las configuraciones en función de tus requisitos.
Establecimiento de las configuraciones de Apache Airflow
Utiliza la consola de Amazon MWAA, el comando update-environment de la AWS CLI o una llamada a la API UpdateEnvironment para personalizar las siguientes configuraciones:
- La configuración celery.worker_autoscale controla la cantidad máxima y mínima de tareas que se pueden ejecutar simultáneamente en un trabajador. Reduce el número máximo de conexiones a la base de datos del trabajador. A continuación, asigna más recursos a cada tarea para un número menor de tareas con los mismos recursos de trabajadores.
- Establece core.execute_tasks_new_python_interpreter en True para crear un nuevo intérprete de Python para cada tarea y aislar la conectividad de la base de datos.
Nota: Establece la configuración en True solo si se repite el error «Psycopg2.OperationalError». - Utiliza la característica de escalamiento automático de Amazon MWAA para aumentar el número máximo de trabajadores.
Nota: Establece los valores max-workers y celery.worker_autoscale para adaptarte a tu carga de trabajo.
Para obtener más información, consulta Uso de las opciones de configuración de Apache Airflow en Amazon MWAA.
Comprobación de los registros del trabajador, programador y servidor web
En los entornos de producción, el registro detallado utiliza recursos innecesarios y aumenta la utilización de la CPU. Se recomienda configurar los registros del trabajador, programador y servidor web en al menos ADVERTENCIA. En la mayoría de los casos, los registros INFORMACIÓN no son necesarios.
Uso de operadores diferibles
Utiliza operadores diferibles cuando tus tareas envíen trabajos a sistemas o servicios externos y esperen a que se produzcan eventos, como la creación de un clúster de EMR. Los operadores diferibles liberan espacios para los trabajadores y aumentan la capacidad de carga de trabajo. Para obtener más información, consulta Operadores y activadores diferibles en el sitio web de Apache Airflow.
Eliminación de código de nivel superior
Elimina del programador el código de nivel superior que utiliza recursos innecesarios. Además, ajusta la configuración dag_processor.min_file_process_interval según tu caso práctico. Para obtener más información, consulta min_file_process_interval y Best practices (Prácticas recomendadas) en el sitio web de Apache Airflow.
No utilices variables de Apache Airflow
No utilices variables de Apache Airflow en el código Python de nivel superior. Al recuperar variables, debes consultar la base de datos y la consulta se produce en cada ciclo de análisis.
Nota: Si debes usar variables, utiliza el almacenamiento en caché de variables. Para obtener más información, consulta use_cache en el sitio web de Apache Airflow.
Simplificación del DAG
Simplifica tu DAG y prueba el código de tu DAG para la versión específica de Python de tu entorno de Amazon MWAA.
Utiliza la asignación dinámica de tareas cuando sea necesario. Para obtener más información, consulta Asignación dinámica de tareas en el sitio web de Apache Airflow.
Creación de un archivo .airflowignore y adición a la carpeta DAG principal de Amazon S3
El programador de Apache Airflow sincroniza el contenido de la carpeta DAG de Amazon S3 con cada trabajador. El programador también analiza periódicamente los archivos de Amazon S3 para actualizar la interfaz de usuario. Cuando analiza, el programador ejecuta los archivos y genera los DAG.
Utiliza el archivo .airflowignore para especificar las carpetas y los archivos de la carpeta DAG en Amazon S3. Debes usar patrones de expresiones regulares y globales. Ignora los archivos que no sean del DAG durante el proceso de análisis para reducir la carga del programador en el programador y mejorar la eficiencia del DAG. Para obtener más información, consulta .airfowignore en el sitio web de Apache Airflow.
- Idioma
- Español

Contenido relevante
- Respuesta aceptada
preguntada hace un año
preguntada hace un año
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptada
preguntada hace 2 años
preguntada hace un año
OFICIAL DE AWSActualizada hace un año
OFICIAL DE AWSActualizada hace un año