我们正在基于Tomcat 8.5的AWS EC2示例(CentOS)上运行Matillion(v1.54)。我们现在已经开发了一些ETL作业,它们的执行需要相当长的时间(即,长达几个小时)。我们希望加快作业的执行速度,我想知道如何识别瓶颈。
让我困惑的是,m5.2xlarge
EC2示例(8个vCPU,32G RAM)和数据库(Snowflake)都不会变得非常忙碌,而且似乎大部分时间都处于空闲状态(关于top
所示的CPU和RAM使用情况)。
我们的环境被配置为使用多达16个并行连接。我们还添加了JVM选项-Xms20g -Xmx30g
到/etc/sysconfig/tomcat8
,以确保JVM获得足够的RAM分配。
我们的Matiillion作业执行转换和加载到许多表中,其中大多数可以(也应该)并行完成。
我们如何加强这一点?
2条答案
按热度按时间falq053o1#
默认情况下,只有一个到Snowflake的JDBC连接,因此您的转换作业可能会因此而被强制串行化。
您可以尝试在“编辑环境”对话框下增加并发连接的数量,如下所示:
有关并发连接的更多信息here。
如果您这样做,要避免的几件事是:
wh6knrhe2#
因为Matiillion服务器只是生成SQL语句并在Snowflake中运行它们,所以Matiillion服务器不太可能成为瓶颈。您应该确保业务流程作业同时将所有内容提交给Snowflake,并且流程中没有内置依赖项(除非需要)。这些步骤将按顺序完成:
这些步骤将并行执行(并将取决于Snowflake仓库的规模):
另外-尝试使用更高并发级别的Alter Warehouse组件