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

Kafka性能测试-kafka-producer/consumer 1.写入数据命令(以下所有命令必须在kafka/bin目录下面执行) ./kafka-producer-perf-test.sh --topic newgameMG–num-records 1000000 --record-size 2000 --throughput 500000 --producer-props bootstrap.servers=172.18.3.94:9099,172.18... 阅读详情

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社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

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

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

数据库国产化探究及升级改造过程指导 当前官网最新版本为DM8,相较于目前主流产品架构:不同特性依靠不同内核去实现,DM8独特采用了双存储引擎架构,行存储引擎和列存储引擎可相互配合、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。 阅读详情

相关推荐

2、深入探究虚拟文件系统

本文深入探讨了Linux中的虚拟文件系统(VFS),介绍了其在不同文件系统之间提供统一接口的作用和重要性。文章涵盖了存储性能的影响因素、Linux中的存储交互机制、文件系统的分类,以及VFS的关键数据结构和工作流程。通过理解VFS,可以更好地优化系统性能并支持多种文件系统的无缝集成。

linux6sysadmin的博客 116

liunx模拟网络延迟、丢包----tc命令

TC是linux自带的模块,一般不需要安装。tc 命令提供了一个非常灵活和强大的接口,可以用来实现各种复杂的网络流量控制和管理策略。广泛应用于网络性能优化、网络模拟测试、服务质量保证等场景。

cs_mengxi的博客 2063

complier lab2

只需支持定义 main 函数即可不带参数 int main(){...}带参数 int main(int argc, int argv){...}

qq_43581843的博客 906

迪思杰复制软件DSG配置和复制堵塞延时问题排查

进入到复制队列目录,查看复制日志,查看引起阻塞的是哪张表,该日志记录了当前在复制的哪些文件,以及文件里2567-I 2567-D 4915-U代表多少行插入,删除,更新,以及涉及哪些表,从下面可以看到只有在复制TKUCM.LACALLCOMMISION这一个表,所以是这个表引起的阻塞。.REAL代表实时增量复制,.FULL是新增复制时设置的,表示是全表刷新,刷新后自动变为.REAL。进入到复制队列目录,查看阻塞时间。FULL_EXPORT = A 代表支持全表刷新,只有配置成了A,新增复制才会刷新全表。

liys0811的博客 1062

软考中级信息系统监理师(第二版)-第21章基础设施工程监理

由于网络信息技术的飞速发展,变化日新月异,网络设计不但要保证目前网络传输容量的要求,也要考虑今后网络的发展,满足当前以及今后相当一段时间内的网络需求,便于向新技术的升级和衔接,同时又需要保护原有的投资。通用布缆系统工程中,承建单位的竣工文档主要包括以下内容:承建合同,招标文件,投标文件,设计方案,工程实施组织设计方案,工程施工报告,隐蔽工程记录,变更记录,自测报告,信息点分布图(表),园区、楼宇、水平配线表,楼层平面图及无线设备点位图,无线设备信息表,竣工图纸等。多排安装时,列间距不应小于1200mm。

2301_78583973的博客 1400

Jasper Report使用JSON数据源创建报表

最近在做一个项目小功能,表单结案要生成PDF报表。 起初,想用HTML模板(art-template模板引擎)编写,利用浏览器的打印功能保存成pdf文件下载。但是HTML编写好的模板,页码、页眉、页脚设置有坑,表单内容中的表格较多,表格不能设置跨页,导致跨页的表格内容与页眉重叠,没能解决这个问题。 于是,转战研究Jasper report生成报表,用更加专业的报表生成工具来做。刚开始,也是跌跌撞撞,遇到了很多问题,因为觉得没有退路了,必须要用这个搞出来,所以就硬着头皮去找各种资料。 主要使用的json

xiaogege2012的专栏 3319

sysbench

severalnines/sysbench

来啊 快活啊 2091

特征提取 Features Extraction

介绍了特征提取的基本概念,从分类变量,文本信息和图片信息中进行特征提取的方法,以及实现特征提取的类库

JasonH2021的博客 1万+

sysbench 压力测试

运行环境 查看操作系统 [tidb@dev10 ~]$ more /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [tidb@dev10 ~]$ 查看 CPU [tidb@dev10 ~]$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-...

记录点滴生活 583

施密特触发电路详细原理介绍

我们想获得矩形脉冲,有种方法是可以采用整形的方法获得矩形脉冲,但前提是可以找到频率和幅度都符合要求的电压信号。 我们设定矩形脉冲的几个指标。 施密特电路是脉冲波形变换中一种常采用的电路,主要有以下两个特点: 1.输入电平从低电平上升过程中电路状态转换为对应的输入电平,与高电平下降过程中对应的输入转换电平不同。 2.通过电路内部的正反馈使输出电压波形的边沿变得很陡。 施密特电路的结构和工作原理 我们先从模电的角度来分析此电路的工作原理。 此电路是通过公共发射极电阻耦合的两级正反馈放大器。 v1输入为低电平

fcxgfdjy的博客 1万+

超声波清洗机拆解实录:从电路板到换能器,一文看懂内部构造(附高清图)

本文详细拆解了超声波清洗机的内部构造,从电路板设计到换能器工作原理,揭示了其核心技术。通过高清图片和详细分析,展示了功率放大电路、高频变压器及压电换能器等关键部件,为电子爱好者和维修技术人员提供了实用的故障诊断和元件二次利用指南。

grape的博客 1183

探究 | Elasticsearch不支持事务有什么好的弥补方案吗?

1、问题 源自星球同学的提问:es如何与hive或mysql结合使用?es不支持事务有什么好的弥补方案吗? 2、事务的核心概念 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下ACID四个特性: 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚, 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态...

ff00yo的博客 1131

告别 SAP GUI 事务码时代:手把手教你配置 SAP Fiori Launchpad

SAP S/4HANA私有云系统安装后,Fiori Launchpad空页面问题常因多层配置未完成所致。SAP仅提供基础技术配置,实际应用启用、业务目录创建、角色授权等需实施团队完成。Fiori配置分为跨客户端层(技术目录)、客户端定制层(业务目录、空间页面)和用户个性化层三层架构。标准授权流程需依次创建业务目录、业务角色、空间页面并正确分配。SAP建议使用最新的配置工具如FLPAM和FLPCM,并采用Spaces/Pages替代已弃用的Groups概念。完整授权需六步:分配基础角色、创建业务目录、维护业务

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 540

探究分布式事务:深入ACID特性在分布式系统中的挑战与解决方案

分布式事务是指涉及多个节点或服务的事务操作,这些节点可以位于不同的物理位置或运行在不同的系统中。分布式事务需要满足ACID属性,即原子性、一致性、隔离性和持久性。在分布式环境中,由于涉及到多个节点和可能存在网络延迟、节点故障等因素,实现ACID属性变得更加复杂。在分布式环境中,实现ACID特性是一项复杂而又重要的任务。面对网络通信延迟、节点故障等挑战,需要采用适当的技术手段和协调机制来确保事务的可靠性和数据的一致性。因此,了解和解决分布式环境下ACID特性的挑战,是设计和构建分布式系统的关键之一。

喔的嘛呀的博客 1229

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

mysql数据写入突然慢了_探究导致 MySQL 慢查询的因素:从硬件、网络到数据库的深度剖析...

yangyidba| 作者授权转载自「yangyidba」公众号一 前言不管是开发同学还是DBA,想必大家都遇到慢查询(select,update,insert,delete 语句慢),影响业务稳定性。这里说的慢,有两个含义一是比正常的慢,有可能正常执行时间是10ms,异常的是100ms 。二是sql执行时间超过设置的慢查询标准比如500ms。本文从IT架构以及数据库纬度来分析导致sq...

weixin_39768247的博客 1008

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Kafka 核心全面总结,高可靠高性能核心原理探究

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 Elast...

weixin_44421461的博客 332

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

分布式系统中的事务处理:原理、模式与优化策略

然而,TCC模式的实现难度较大,需要开发者对业务逻辑有深入的理解和精细的设计,同时,各阶段的操作需要保证幂等性,以避免重复执行带来的问题。三阶段提交通过引入预提交阶段,减少了单点故障的影响,提高了系统的容错性。在一些对实时一致性要求不高的场景下,可以采用最终一致性模型,通过异步复制、消息队列等技术实现数据的最终同步,减少事务处理过程中的同步开销,提高系统的并发性能。同时,建立快速的故障检测和自动恢复机制,当检测到节点故障或事务执行异常时,能够迅速进行故障转移和事务回滚,保证系统的可用性和数据的完整性。

wenlong5o02的博客 551

【MySQL源码】Seconds_Behind_Master是如何计算的

作为MySQL DBA,相信大家对参数 `Seconds_Behind_Master` 并不陌生,该字段的值可以通过 show slave status\G的输出,表示主从延迟的时间,单位为秒。监控主从延迟一般取这个值就足够了。0 表示无延迟,理想状态该值不要超过1。如果业务场景中有写后读,而且读的是从库,那么就会对主从延迟要求非常高。理解了该字段的含义,大家有没有探究过该值是如何计算的?相信大家都可以说出来 是从库的时间 减去 SQL_thread应用到的主库binlog event的时间戳。今天从官

DBA之路的博客 2460

Python数据批量插入:为什么executemany比execute快10倍?实测对比分析

本文通过实测对比分析了Python中executemany与execute在数据批量插入时的性能差异。深入剖析了executemany通过减少网络往返、SQL解析和事务开销实现十倍以上性能提升的原理,并提供了分批插入和LOAD DATA INFILE等进阶优化策略,帮助开发者高效处理海量数据写入。

weixin_29055699的博客 119

mysql 单机最大qps

数据库相关学习资料:https://edu.51cto.com/video/655.htmlMySQL 单机最大 QPS 探究 在数据库领域,QPS(每秒查询率)是一个衡量数据库性能的重要指标。对于 MySQL 这种广泛使用的数据库系统,了解其单机最大 QPS 对于优化数据库性能和设计高并发系统至关重要。本文将从 MyS...

weixin_41417059的博客 791

细细探究MySQL Group Replicaiton — 配置维护故障处理全集

http://www.cnblogs.com/xinysu/p/6674832.html 阅读目录(Content) 1 What's Group Replication 2 配置要求与限制 2.1 数据库要求 2.1.1 innodb引擎2.1.3 隔离级别2.1.4 外键2.1.5 IPv4网络,网络性能稳定延迟小带宽充足2.1.6 自增跟步

zdy0_2004的专栏 1万+
上一篇: 工具分享丨分析GreatSQL Binglog神器
下一篇: GreatSQL 优化技巧:将 MINUS 改写为标量子查询
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值