
限速
DataX的限速实际上是在core.json文件的speed方法里面进行配置的,通过记录数和字节数来限制速度。在Channel初始化时,会初始化限速的记录数和字节数,并在statPush方法里面根据当前的byteSpeed和设定的byteSpeed对比,求出睡眠时间,再根据当前的recordSpeed和设定的recordSpeed对比,取休眠时间的最大值,最后使用Thread.sleep方法实现限速。
调优
传输速度缓慢可能是因为网络本身的带宽等硬件因素,也可能是DataX本身的参数导致的。针对网络本身的情况,可以通过从源端到目的端scp、pythonhttp、nethogs等观察实际网络及网卡速度的方式来排查,也可结合监控观察任务运行时间段时网络整体的繁忙情况,来判断是否应将任务避开网络高峰运行或观察任务机的负载情况,尤其是网络和磁盘IO,看其是否成为瓶颈,影响了速度。而针对DataX本身的参数,可以通过提升每个channel的速度或者提升DataXJob内Channel并发数来进行调优。当提升DataXJob内Channel并发数时,应该调整JVM堆参数,否则会出现内存不足等错误。同时,Channel个数也不是越多越好,过分大反而会影响宿主机的性能。调整JVMxmsxmx参数的方式有两种,一种是直接修改datax.py,而另一种是在启动时加上对应的参数。需要注意的是,MysqlReader进行数据抽取时,如果指定splitPk,则DataX会启动并发任务进行数据同步。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6602.html
