抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

DataX 任务跑慢了,很多人的第一反应是把 job.setting.speed.byte 往上调。这个动作有时有效,有时一点反应都没有,偶尔还会把目标库写得更慢。

问题出在我们很容易把它理解成一个总限速开关。DataX 启动前会用速度预算计算 Channel 数量,运行中再由每个 Channel 统计吞吐并决定要不要休眠。Reader 和 Writer 之间还有一个有界队列。任何一环跟不上,都会把前后两端拖住。

下面的代码基于 DataX 提交 30842ca,提交时间是 2020 年 11 月 9 日。这样可以避开后来版本的改动,也和这篇笔记的时间对得上。

DataX 从速度预算到运行时背压的链路