网络延迟对事务的影响

这篇具有很好参考价值的文章主要介绍了网络延迟对事务的影响。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.背景概述

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

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

2.问题复现

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

2.1 查看当前网络延迟

$ ping 192.168.137.162

PING 192.168.137.162 (192.168.137.162) 56(84) bytes of data.
64 bytes from 192.168.137.162: icmp_seq=1 ttl=64 time=0.299 ms
64 bytes from 192.168.137.162: icmp_seq=2 ttl=64 time=0.180 ms
64 bytes from 192.168.137.162: icmp_seq=3 ttl=64 time=0.297 ms
64 bytes from 192.168.137.162: icmp_seq=4 ttl=64 time=0.329 ms
64 bytes from 192.168.137.162: icmp_seq=5 ttl=64 time=0.263 ms
64 bytes from 192.168.137.162: icmp_seq=6 ttl=64 time=0.367 ms
64 bytes from 192.168.137.162: icmp_seq=7 ttl=64 time=0.237 ms
64 bytes from 192.168.137.162: icmp_seq=8 ttl=64 time=0.160 ms
64 bytes from 192.168.137.162: icmp_seq=9 ttl=64 time=0.180 ms
64 bytes from 192.168.137.162: icmp_seq=10 ttl=64 time=0.257 ms

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

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

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

$ time sysbench lua/oltp_read_write.lua --mysql-db=sysbench --mysql-host=192.168.137.162 --mysql-port=3307 --mysql-user=root --mysql-password=greatdb --tables=1 --table_size=5000000 --report-interval=2 --threads=10 --time=600 --mysql-ignore-errors=all prepare

sysbench 1.1.0-df89d34 (using bundled LuaJIT 2.1.0-beta3)
Initializing worker threads...

Creating table 'sbtest1'...
Inserting 5000000 records into 'sbtest1'

Creating a secondary index on 'sbtest1'...
 
real1m56.459s
user0m7.187s
sys0m0.400s

写入 500w 数据量耗时 1m56s

2.2.2 sysbench 压测3分钟

SQL statistics:
  queries performed:
​    read:               1711374
​    write:              488964
​    other:              244482
​    total:              2444820
  transactions:             122241 (407.37 per sec.)
  queries:               2444820 (8147.45 per sec.)
  ignored errors:            0    (0.00 per sec.)
  reconnects:              0    (0.00 per sec.)

Throughput:
  events/s (eps):            407.3725
  time elapsed:             300.0718s
  total number of events:        122241

Latency (ms):
​     min:                  10.68
​     avg:                  122.72
​     max:                 1267.88
​     95th percentile:            502.20
​     sum:               15000894.94

Threads fairness:
  events (avg/stddev):      2444.8200/14.99
  execution time (avg/stddev):  300.0179/0.02

可以看到 TPS:407.37 QPS:8147.45

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

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

# 对ens3网卡进行延迟设置,设置延迟为10ms
tc qdisc add dev ens3 root netem delay 10ms

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

# 报错
tc qdisc add dev ens3 root netem delay   10ms
Error: Specified qdisc not found.

# 升级
$ yum install kernel-modules-extra*

# 重启主机
$ reboot

2.4查看当前网络延迟

$ ping 192.168.137.162

PING 192.168.137.162 (192.168.137.162) 56(84) bytes of data.
64 bytes from 192.168.137.162: icmp_seq=1 ttl=64 time=10.5 ms
64 bytes from 192.168.137.162: icmp_seq=2 ttl=64 time=10.4 ms
64 bytes from 192.168.137.162: icmp_seq=3 ttl=64 time=10.5 ms
64 bytes from 192.168.137.162: icmp_seq=4 ttl=64 time=10.4 ms
64 bytes from 192.168.137.162: icmp_seq=5 ttl=64 time=10.4 ms
64 bytes from 192.168.137.162: icmp_seq=6 ttl=64 time=10.4 ms
64 bytes from 192.168.137.162: icmp_seq=7 ttl=64 time=10.4 ms
64 bytes from 192.168.137.162: icmp_seq=8 ttl=64 time=10.5 ms
64 bytes from 192.168.137.162: icmp_seq=9 ttl=64 time=10.5 ms
64 bytes from 192.168.137.162: icmp_seq=10 ttl=64 time=10.2 ms

网络延迟大约为 10ms

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

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

$ time sysbench lua/oltp_read_write.lua --mysql-db=sysbench --mysql-host=192.168.137.162 --mysql-port=3307 --mysql-user=root --mysql-password=greatdb --tables=1 --table_size=5000000 --report-interval=2 --threads=10 --time=600 --mysql-ignore-errors=all prepare

sysbench 1.1.0-df89d34 (using bundled LuaJIT 2.1.0-beta3)
Initializing worker threads...

Creating table 'sbtest1'...
Inserting 5000000 records into 'sbtest1'

Creating a secondary index on 'sbtest1'...

real2m11.656s
user0m7.314s
sys0m0.470s

写入 500w 数据量耗时 2m11s

2.3.2 sysbench 压测3分钟

SQL statistics:
    queries performed:
        read:                            788214
        write:                           225204
        other:                           112602
        total:                           1126020
    transactions:                        56301  (187.41 per sec.)
    queries:                             1126020 (3748.16 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

Throughput:
    events/s (eps):                      187.4079
    time elapsed:                        300.4196s
    total number of events:              56301

Latency (ms):
         min:                                  210.14
         avg:                                  266.68
         max:                                  493.91
         95th percentile:                      419.45
         sum:                             15014235.80

Threads fairness:
    events (avg/stddev):           1126.0200/1.16
    execution time (avg/stddev):   300.2847/0.16

可以看到 TPS:187.41 QPS:3748.16

3.总结

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


Enjoy GreatSQL 😃

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

网络延迟对事务的影响

技术交流群:

微信:扫码添加GreatSQL社区助手微信好友,发送验证信息加群

网络延迟对事务的影响文章来源地址https://www.toymoban.com/news/detail-843727.html

到了这里,关于网络延迟对事务的影响的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.cnblogs.com/greatsql/p/18098189

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 网络延迟排查方法详解

      在 Linux 服务器中,可以通过内核调优、DPDK 以及 XDP 等多种方式提高服务器的抗攻击能力,降低 DDoS 对正常服务的影响。在应用程序中,可以使用各级缓存、WAF、CDN 等来缓解 DDoS 对应用程序的影响。 但是需要注意的是,如果 DDoS 流量已经到达 Linux 服务器,那么即使应用层

    2024年02月12日
    浏览(7)
  • leetcode743. 网络延迟时间 DJ

    https://leetcode.cn/problems/network-delay-time/ 有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在, 从某个节点 K 发出一个信号。需要多

    2024年02月16日
    浏览(11)
  • WCDMA网络容量及WCDMA 3G网络速度影响因素

    WCDMA网络是一个软容量网络,其与网络的覆盖、质量均有关系,所以在现网中,网络容量不是固定的。 从纯理论角度考虑,一个扇区可以支持120个普通语音用户或30个视频语音用户或15个R99数据用户,这是因为WCDMA网络容量是通过码资源来分配的,单扇区包含16个信道资源(S

    2024年02月05日
    浏览(13)
  • ChatGPT对网络安全的影响

    前言:6年前,微软推出智能聊天机器人Tay,因她从不良用户那里“学坏”,小姑娘只好被下线结束了短暂的生命。最近,微软投资OpenAI推出了ChatGPT,它在安全性上一定大有改善,但是人工智能带来的安全风险有很多未知数,在这篇文章中提出了他对ChatGPT安全问题的见解,这

    2024年02月03日
    浏览(19)
  • 美国服务器网络延迟过高的原因及解决方案

    美国服务器网络延迟成为了一个普遍存在的问题 。尤其是对于使用美国服务器的用户来说, 网络延迟过高是一个常见的困扰 。本文将探讨 美国服务器网络延迟过高的原因 ,并提供一些 解决方案 。 1. 距离因素 :美国位于亚洲大陆的对面,所以如果用户位于亚洲地区,使用

    2024年01月20日
    浏览(12)
  • 【网络】传输层——TCP(滑动窗口&&流量控制&&拥塞控制&&延迟应答&&捎带应答)

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 上篇文章对TCP可靠性机制讲解了一部分,这篇文章接着继续讲解。 在上篇文章中,本喵讲解了TCP的确认应答机制: 如上图所示,主机A每发送一个数据段,主机B都要给一个 ACK 确认应答,

    2024年02月12日
    浏览(15)
  • 网络摄像头rtsp流延迟无法解决,改用Mjpeg流成功保证低延迟稳定传输,并成功解决opencv对Mjpeg流支持问题

    最近做的一个小项目,是需要通过一个网络实时将画面传输给后端进行处理。因为涉及到对运动的捕捉,延迟要求较为严格。我的网络摄像头是Z CAM E2 M4,内置了rtsp流。使用rtsp流时总会产生2秒的延迟。直接使用ffmpeg播放依然存在2s延迟。尝试过修改缓冲大小无果。查阅相机文

    2024年02月07日
    浏览(17)
  • 云原生之深入解析如何调试Kubernetes集群中的网络延迟问题

    随着 Kubernetes 集群规模不断增长,对于服务延迟的要求越来越严苛,有时候观察到一些运行在 Kubernetes 平台上的服务正在面临偶发的延迟问题,这些断断续续的问题并不是由于应用本身的性能问题导致的。 慢慢发现,Kubernetes 集群上的应用产生的延迟问题看上去似乎是随机的

    2024年02月04日
    浏览(15)
  • Linux TCP/IP内核参数调优,网络高延迟大吞吐(方案二)。

    方案一:Linux TCP/IP内核参数调优,网络高延迟大吞吐。_net.ipv4.tcp_wmem_liulilittle的博客-CSDN博客 nano /etc/sysctl.conf sysctl -p 另类设置

    2024年02月15日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包