本文为您介绍在不同场景下,提升 DTS 传输速率的操作指导。
影响传输性能因素
1. 源/目标端的规格配置:DTS 传输时会增加源/目标端的负载,如果负载较高会导致传输性能下降。针对源/目标端本身规格配置较低的场景,可以适当降低 DTS 的传输速率。
2. DTS 的传输参数配置:DTS 任务传输的 RPS 和并发数可以灵活配置,一般情况下,默认参数不需要修改。如果设置不合理会导致性能受限。
3. 源到目标端的网络带宽、延迟:源端和目标端之间的网络需要连接稳定,无网络延迟和丢包。
选择“公网”接入方式时,因公网环境下带宽无法保证,网络可能会成为传输瓶颈,建议选择“专线接入”或“VPN 接入”,提高网络质量。
选择“云联网”接入方式时,云联网仅提供所有地域间 10Kbps 以下的免费带宽,使用 DTS 对正式的业务数据进行传输时,需要付费来选择更高的带宽。
跨地域传输的延迟会高于同地域。DTS 任务实例的归属地域,需要与目标实例地域保持一致,否则延时会增大。同时,如果是自建数据库,需要就近选择 DTS 地域进行传输。
4. 源端的数据问题:源端本身的数据内容不符合 DTS 规范(如有较长时间的 SQL 在运行、无主键表等),可能会导致传输进度卡住,这种情况建议对源端的索引和查询进行优化。或者源端有大事务操作、频繁 DDL 操作,这些会导致增量阶段短时间内的传输速率慢。
DTS 性能调优手段
1. 调整 DTS 任务传输参数。
选择指定的任务,在操作列选择更多 > 限速可调整。
全量阶段可调参数:源库全量导入并发线程数和 RPS,目标库全量导入并发线程数和 RPS。
增量阶段可调参数:目标库增量导入并发线程数。
2. 调整 DTS 任务规格。
选择指定的任务,在操作列选择更多 > 变配可调整。
购买 DTS 任务时,选择了不同的规格,在增量阶段对应的 RPS 上限不同。如下仅以数据同步任务为例,更多详情参考 规格说明。如果增量阶段源库的写入过大,购买的规格不够用,则需要升级 DTS 任务规格。
规格 | 性能上限(RPS)参考 |
micro | 1000 |
small | 2000 |
medium | 5000 |
large | > 5000 |
3. 任务暂停再恢复。
选择指定的任务,在操作列选择更多 > 暂停。
遇到源库短期内的业务波峰,导致目标端负载较高,可以先暂停任务,待数据波峰过后再继续同步。
整体原则
遇到性能问题,先排查网络和配置因素,再修改 DTS 速率配置参数。
DTS 传输性能与源/目标端的配置、DTS 任务规格、网络带宽、网络延迟等都有关系,所以提升 DTS 传输性能时,单独的增大并发线程数,或增大 RPS,不一定有效,需要分析性能瓶颈在哪个环节,针对具体问题具体解决。
性能调优步骤
1. 观察监控信息。
选择指定的任务,单击任务 ID,进入任务详情页。切换页签后,单击监控数据,查看对应的指标数据。
2. 如果监控数据显示延迟较高,请先排查网络问题。同地域延迟大于3ms,则判定延迟高,跨地域延迟还会略微增加。
2.1 选择“公网”接入方式时,因公网环境下带宽无法保证,网络可能会成为传输瓶颈,建议选择“专线接入”或“VPN 接入”,以提高网络质量。
2.2 选择“云联网”接入方式时,云联网仅提供所有地域间 10Kbps 以下的免费带宽,使用 DTS 对正式的业务数据进行传输时,需要付费来选择更高的带宽。
2.3 DTS 任务实例的归属地域,需要与目标实例地域保持一致,否则延时会增大。例如用户打算同步数据到广州地域,那么需要在广州地域下新建同步任务。
2.4 如果是自建数据库,需要就近选择 DTS 地域进行传输,否则延迟会增大。例如自建数据库在北京,需要将自建数据库同步到腾讯云的上海地域数据库,则 DTS 创建链路时地域选择“北京->上海”。选择“上海->上海”、“深圳->上海”均会增大延迟。
3. 全量阶段,调整 DTS 速率。
说明:
数据迁移任务在全量导出阶段(仅限结构导出、无主键表导出),数据同步任务在全量导出阶段(仅限结构导出、无主键表导出),或者主键冲突策略选择“冲突报错”,这些场景调整速率参数后可能会导致任务从头重新传,因此在如下3.1和3.2的调整操作前请仔细评估。
3.1 导出速率正常:全量导出 BPS 高于20-50MB/s,全量导出时与源实例网络延迟小于1ms。
这种一般不需要调整,如果用户需要提升速率,请结合源端的负载情况进行分析。
源端负载较高(例如 CPU 占用率大于90%),不建议再增大速率。
源端负载较低(例如 CPU 占用率小于50%),可以适当增大源端导出并发线程数。全量阶段默认 RPS 非常大,提升传输速率时一般不需要调整 RPS。如果修改导出并发线程数后效果不显著,请继续步骤5。
3.2 导出速率受限:全量导出 BPS 小于20MB/s,全量导出时与源实例网络延迟大于3ms。
需要结合源端的负载进行分析。
源端负载较高(例如 CPU 占用率大于90%),则源端本身的配置较低,DTS 的传输又增加了负载,导致性能受限,建议适当降低源端导出的并发线程数和 RPS。如果效果不显著,建议使用从库进行同步。
源端负载较低,适当增大源端导出并发线程数。如果调整后效果不显著,请继续步骤5。
3.3 导入速率正常:全量导入 BPS 高于20-50MB/s,全量导入时与目标实例网络延迟小于1ms。
这种一般不需要调整,如果用户需要提升速率,需要结合目标端的资源使用情况。
目标端负载较高(例如 CPU 占用率大于90%),不建议再增大速率。
目标端负载较低(例如 CPU 占用率小于50%),则可以适当增大目标端导入并发线程数。如果修改后效果不显著,请继续步骤5。
3.4 导入速率受限:全量导入 BPS 小于20MB/s,全量导入时与目标实例网络延迟大于3ms。
需要结合目标端的负载进行分析。
目标端负载较高(例如 CPU 占用率大于90%),则目标端本身的配置较低,DTS 的传输又增加了负载,导致性能受限,这种情况建议先适当降低目标端导入并发线程数和 RPS。
调整后效果不显著,可使用暂停功能,暂时停止任务传输。暂停任务建议不要超过3天,否则再恢复后可能无法接续传输。
目标端负载较低,可以适当增大目标端导入并发线程数。如果修改后效果不显著,请继续步骤5。
4. 增量阶段,调整 DTS 速率。
4.1 通过监控查看增量任务的 RPS (源实例增量导出 RPS、目标实例增量导入 RPS)是否达到规格的上限,购买了不同规格的任务,对应的 RPS 上限 不同。
如果增量 RPS 已达上限,则先升级 DTS 任务规格(通过变配操作实现)。
如果增量 RPS<任务规格上限的60%,则可能性能受限,请继续步骤4.2。
4.2 查看目标端负载。
如果目标端负载达极限(例如 CPU 占用率大于95%),请继续步骤4.3。
如果目标端负载较正常(例如 CPU 占用率在60-85%),一般情况下不需要调整。
如果目标端负载较低(例如 CPU 占用率小于50%),可适当增大 DTS 速率参数。
目标端为数据库类型,可适当调大目标端写入并发线程数。调完效果不显著,请继续 步骤5。
目标端为 Kafka,增大目标端写入并发线程数效果可能不显著,请先增大目标端 CKafka 的带宽配置和分区数(多个分区可并发写入,提升写入目标端的速率)。
4.3 查看源端是否有大事务操作/频繁 DDL 操作。
4.3.1 源端有大事务/频繁 DDL 操作。
这种会对目标端产生临时的负载,可以暂停任务,待大事务/DDL 同步结束后,再恢复任务。但建议暂停的时间不要超过3天,否则任务可能会失败。
4.3.2 源端无大事务/频繁 DDL 操作。
这种由于目标端本身的配置较低,DTS 的传输又增加了负载,导致性能受限,建议先降低目标端导入并发线程数。
目标端为数据库类型,可适当降低目标端写入并发线程数。如果调完没有效果,请对任务进行降配。
目标端为 Kafka,请先适当增大目标端 CKafka 的带宽配置和分区数(多个分区可并发写入,提升写入目标端的速率)。然后再降低目标端写入并发线程数。如果调完没有效果,请对任务进行降配。
5.
检查源端的数据内容。
5.1 源端是否有较长时间的 SQL 在运行。
如果源端如果有慢 SQL 运行,则会导致同步速率变慢。检查源端是否有慢 SQL,如有对慢 SQL 进行处理,并建议优化索引,避免慢 SQL 运行。
5.2 源端是否有不符合 DTS 规范的数据。
如果源端存在无主键表,对这些表进行大规模查询可能会导致同步进度慢。建议给源端的表都加上主键,或者不要同步无主键的表。