性能问题排查
前言
采用默认配置,如果出现某些大字段导致性能上不去或者出现OOM的情况,一般可以按照如下方式确认性能瓶颈原因并且进行调优。
确认性能瓶颈原因
1. 程序是否异常
首先查看监控管理,查看有没有近期的任务异常,如果对应任务有写入异常,可能一些表的数据就会一直无法写入。
2. 程序是否存在GC问题导致的OOM
任务监控 的 资源监控 页面可以查看 GC 情况,如果存在 FGC 的30秒耗时和 FGC 30秒数量大于0(正常情况下应该为0),则说明任务运行时JAVA的垃圾回收导致性能降低和OOM。
3. 存在GC问题时
3.1 全量迁移参数修改
任务详情->参数设置,改小 fullRingBufferSize 参数、fullBatchSize 参数、writeParallel 参数的值,然后观察 FGC 相关指标是否变小。 如果没有GC问题,需要提升性能,也可以适当增大以上参数,提升并行和批处理效率
3.2 增量同步参数修改
任务详情->参数修改,改小 increRingBufferSize 参数、increBatchSize 参数、writeParallel 参数的值,然后观察FGC相关指标是否变小。
4. 不存在GC问题
适当增大第三步涉及的参数,提升 并行 和 批处理 效率。
TIPS: 任务的负载不同、环境不同,最佳的参数配置也有所不同,用户可以自行验证,找到自家最佳的参数配置组合,一切请以实际情况为准。
5. 对端写入瓶颈确认
任务详情->查看日志。其中最后一列是耗时的毫秒数。
日志路径: /home/clougence/logs/cloudcanal/tasks/${taskName}/apply_commit.log
例如上面一批的耗时为将近10s,说明对端处理能力存在瓶颈。在不存在FGC的前提下,可以尝试增大并行数,以及前文提到的3个批量相关的参数
6. 机器资源状况确认
确认机器的 cpu usage,cpu load等情况,如果以上源对端不存在瓶颈,并且也不存在OOM和异常,可以查看机器的监控,如果监控发现机器负载比较高,则考虑使用更高规格的机器。
7. 规格调整
如果上诉检查都没问题,且资源富余,建议考虑修改规格。
任务详情->参数修改,修改 specId,根据需要修改对应的规格id来启用不同的任务规格。