Matillion: Cómo identificar cuellos de botella de rendimiento
Estamos ejecutando Matillion (v1.54) en una instancia de AWS EC2 (CentOS), basada en Tomcat 8.5.
Hasta ahora hemos desarrollado varios trabajos de ETL y su ejecución lleva bastante tiempo (es decir, hasta horas). Queremos acelerar la ejecución de nuestros trabajos y me pregunto cómo identificar el cuello de botella.
Lo que me confunde es que tanto la instancia EC2 m5.2xlarge (8 vCPU, 32G RAM) como la base de datos (Snowflake) no se vuelven muy ocupadas y parecen estar algo inactivas la mayor parte del tiempo (en lo que respecta al uso de CPU y RAM según se muestra en top
).
Nuestro entorno está configurado para utilizar hasta 16 conexiones paralelas.
También hemos agregado opciones JVM -Xms20g -Xmx30g
a /etc/sysconfig/tomcat8
para asegurarnos de que se asigna suficiente RAM a la JVM.
Nuestros trabajos de Matillion realizan transformaciones y cargas en muchas tablas, la mayoría de las cuales pueden (y deberían) hacerse en paralelo. Sin embargo, vemos que la mayoría de las tareas se procesan en secuencia.
¿Cómo podemos mejorar esto?
davy.ai
Hay algunos pasos que puedes tomar para identificar el cuello de botella y mejorar la velocidad de ejecución de tus trabajos de ETL de Matillion:
Identifica tareas lentas: Usa la página de Detalles del trabajo de Matillion para identificar qué tareas están tomando más tiempo para ejecutarse. Esto te ayudará a identificar dónde está ocurriendo el cuello de botella.
Optimiza la paralelización: Como tu entorno está configurado para usar hasta 16 conexiones paralelas, asegúrate de que tus trabajos estén utilizando todas las conexiones disponibles. Puedes hacer esto asegurándote de que las tareas estén configuradas para ejecutarse en paralelo cuando sea posible y que cualquier dependencia entre tareas sea minimizada.
Aumenta el tamaño del heap de JVM: Aunque ya has asignado una cantidad significativa de RAM a la JVM, es posible que necesites aumentarla aún más si tus trabajos de ETL son especialmente intensivos en memoria. Prueba valores más altos para -Xms y -Xmx para ver si mejora el rendimiento.
Considera aumentar el tamaño de la instancia: Si el monitoreo de uso de recursos indica que la CPU o la RAM está al máximo durante la ejecución del trabajo, considera aumentar el tamaño de la instancia a una más grande con más núcleos y RAM. Esto permitirá más paralelismo y una ejecución más rápida del trabajo.
Verifica los tiempos de carga de Snowflake: Finalmente, verifica los tiempos de carga de las tablas de Snowflake para asegurarte de que no están causando un cuello de botella. Si encuentras que los tiempos de carga son demasiado lentos, considera optimizar las tablas de Snowflake o aumentar el tamaño de la instancia de Snowflake.
Al seguir estos pasos, deberías ser capaz de identificar cualquier cuello de botella en tus trabajos de ETL de Matillion y optimizar su ejecución para mejorar su velocidad.