Skip to content
运维指南/性能与资源问题/数据同步慢与内存溢出/作业执行慢- 排查与解决手册

作业执行慢- 排查与解决手册

1. 同步速度慢:每秒仅 1-2 条数据


现象:数据同步作业执行极慢,远低于预期。

解决步骤:

1.调大“处理集大小” 在作业通用配置中,将处理集大小从 1000 调至 5000~10000。

2.开启数据库批处理

MySQL:JDBC URL 添加 rewriteBatchedStatements=true

PostgreSQL:添加 reWriteBatchedInserts=true

3.增加并行度

4.使用多个表输出组件,连线规则选“分发”。

5.优化 SQL 查询 确保源表查询有索引,避免全表扫描。


2. 作业执行缓慢:几万条数据需半小时

现象:小数据量作业执行时间过长。

解决步骤

1.按第 1条优化批处理和并发。

2.检查目标数据库性能,是否有锁等待或索引缺失。

3.使用“批量加载”组件(如 MySQL批量加载)替代普通表输出。- 参考:批量加载组件

4.分析作业日志,定位具体哪个步骤耗时最长。


3. 内存溢出(OOM):GC overhead limit exceeded / Java heap space

现象:作业执行时报内存溢出,或预览大文件时崩溃。

解决步骤

  1. 调大组件 JVM 内存

    • DWS server:修改 bin/startup.sh 中的 -Xms 和 -Xmx(如 -Xms4g -Xmx4g,内存大小请根据实际调大)。

    • Dolphin:修改 dolphinscheduler_env.sh 中的 MASTER_JAVA_OPTS 和 WORKER_JAVA_OPTS。

    • DI server:修改 diserver/config/jvm_options。

    • SeaTunnel:修改 seatunnel/config/jvm_options 和 jvm_client_options。(参数如 -Xms2g -Xmx2g,内存大小具体根据实际调大)

      • 若还有如下这种gc异常ava.lang.OutOfMemoryError; GC overhead limit exceeded及Dumping heap to /tmp/seatunnel/dump/zeta-client.,seatunnle还需调整seatunnel/config/jvm_worker_options配置文件中jvm参数
  2. 数据加工中调小作业的“处理集大小”

    在作业通用配置中,将“处理集大小”从 10000 调低至 2000~5000,减少单次事务内存消耗。

  3. 拆分大作业

    将一个大作业拆分为多个小作业,通过编排串行或并行执行。


常用调优参数速查

组件参数位置优化建议
Dolphin 资源阈值application.yamlmax-system-memory-usage-percentage-thresholds: 0.95
DI 处理集大小作业通用配置5000~10000
DI server 内存jvm_options-Xms4g -Xmx8g
SeaTunnel 内存jvm_optionsjvm_client_options
MySQL 批处理JDBC URLrewriteBatchedStatements=true
PostgreSQL 批处理JDBC URLreWriteBatchedInserts=true

:调整 JVM 内存前确保服务器有足够物理内存。