网络通信 频道

探究网络延迟对事务的影响

  1.背景概述

  最近在做数据同步测试,需要通过DTS将kafka中的数据同步到数据库中,4G的数据量同步到数据库用了大约4个多小时,这看起来并不合理;此时查看数据库所在主机的CPU,IO的使用率都不高,没有瓶颈;最后通过排查发现由于kafka,DTS,数据库不再同一个机房,网络延迟较大,导致同步速率缓慢;

  将kafka,DTS,数据库部署到同一个机房后,同步速度明显提升,只需要15分钟就能同步完。

  2.问题复现

  本次测试通过sysbench在不同网络延迟的情况下,进行数据写入及性能压测,对比网络延迟对数据库事务的影响。

  2.1 查看当前网络延迟

  当前2台主机在同一个机房,网络延迟大约在 0.3ms 左右

  2.2 (正常延迟)通过sysbench写入数据

  2.2.1 创建一张表写入500W条数据

  写入 500w 数据量耗时 1m56s

  2.2.2 sysbench 压测3分钟

  可以看到 TPS:407.37 QPS:8147.45

  2.3通过tc命令模拟网络延迟

  tc命令是Linux系统中的一个网络管理工具,用于配置和管理网络流量控制。它可以用来限制网络带宽、延迟、丢包等,以及实现QoS(Quality of Service)等功能。

  如果在使用tc命令时报错如下错误,可以升级一下内核模块

  2.4查看当前网络延迟

  2.5 (延迟10ms)通过sysbench写入数据

  2.5.1 创建一张表写入500W条数据

  写入 500w 数据量耗时 2m11s

  2.5.2 sysbench 压测3分钟

  SQL statistics:

      Throughput:

      Latency (ms):

      Threads fairness:

      可以看到 TPS:187.41 QPS:3748.16

      3.总结

通过上面的测试可以看出网络延迟较大时,对数据的写入及每秒执行的事务数都有较大影响;如果需要做性能测试及数据同步,尽量将压测工具或同步工具部署在同一个机房,避免网络延迟较大,对测试结果有影响。

0
相关文章