Skip to main content

性能问题排查

前言

采用默认配置,如果出现某些大字段导致性能上不去或者出现OOM的情况,一般可以按照如下方式确认性能瓶颈原因并且进行调优。

确认性能瓶颈原因

1. 程序是否异常

首先查看监控管理,查看有没有近期的任务异常,如果对应任务有写入异常,可能一些表的数据就会一直无法写入。

TIPS: 异常监控处请选择任务异常,右侧点击查看异常堆栈 fde373bf-29e7-46a1-90e4-60dd52c6bc9f-image.png

2. 程序是否存在GC问题导致的OOM

任务监控资源监控 页面可以查看 GC 情况,如果存在 FGC 的30秒耗时和 FGC 30秒数量大于0(正常情况下应该为0),则说明任务运行时JAVA的垃圾回收导致性能降低和OOM。

14023231-7f11-4876-aeb7-cf6863df8297-image.png

3. 存在GC问题时

3.1 全量迁移参数修改

任务详情->参数设置,改小 fullRingBufferSize 参数、fullBatchSize 参数、writeParallel 参数的值,然后观察 FGC 相关指标是否变小。 如果没有GC问题,需要提升性能,也可以适当增大以上参数,提升并行和批处理效率

efd88bc6-155f-4bac-8fe3-99a4df6ad556-image.png

fb325c4d-890a-4337-89f8-516157b1391d-image.png

da89f4ff-2318-4f86-990a-27f2329877a2-image.png

3.2 增量同步参数修改

任务详情->参数修改,改小 increRingBufferSize 参数、increBatchSize 参数、writeParallel 参数的值,然后观察FGC相关指标是否变小。

4. 不存在GC问题

适当增大第三步涉及的参数,提升 并行批处理 效率。

3c1c89ca-c1cb-492a-aa67-9d6c054aad07-image.png

5dce8d55-42e4-4fb7-ab9e-350cda4d4d82-image.png

TIPS: 任务的负载不同、环境不同,最佳的参数配置也有所不同,用户可以自行验证,找到自家最佳的参数配置组合,一切请以实际情况为准。

5. 对端写入瓶颈确认

任务详情->查看日志。其中最后一列是耗时的毫秒数。

日志路径: /home/clougence/logs/cloudcanal/tasks/${taskName}/apply_commit.log

4d432440-54b6-499a-b6aa-7df6a306832f-image.png

例如上面一批的耗时为将近10s,说明对端处理能力存在瓶颈。在不存在FGC的前提下,可以尝试增大并行数,以及前文提到的3个批量相关的参数

6. 机器资源状况确认

确认机器的 cpu usagecpu load等情况,如果以上源对端不存在瓶颈,并且也不存在OOM和异常,可以查看机器的监控,如果监控发现机器负载比较高,则考虑使用更高规格的机器。

7. 规格调整

如果上诉检查都没问题,且资源富余,建议考虑修改规格。

任务详情->参数修改,修改 specId,根据需要修改对应的规格id来启用不同的任务规格。

de43b355-db75-4d62-b7e1-1044d42e0558-image.png