当前位置: 首页 > news >正文

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化

  • 源数据库
  • Kafka Connect
  • 监控
  • 测试结果

源数据库

  • Oracle 19c,本地,CDB
  • 数据库主机的I/O带宽为6 GB/s,由此主机上运行的所有数据库共享
  • 临时表空间由42个文件组成,每个文件大小为32 GB,由数据库上运行的所有进程共享
  • 注意:如果有太多并行线程且数据量大(例如,在覆盖语句中对大表使用order by子句),可用空间可能达到上限。

Kafka Connect

  • 3个节点,RHEL虚拟机,每个节点有12个CPU,62 GB RAM,40 GB JVM
  • Kafka CP 7.7.1
  • Debezium 3.0,部署在Kafka Connect上

监控

  • Prometheus和Grafana

测试结果

在我的测试中,我主要关注性能相关的属性。这些属性包括:

  • 在Debezium方面:
    • snapshot.max.threads
    • snapshot.fetch.size
    • max.batch.size
    • max.queue.size
    • poll.interval.ms
  • 在Kafka Connect方面:
    • batch.size
    • linger.ms
    • compression.type

我在测试中尝试了这些属性,并获得了有趣的见解。在这一点上,我已经揭示了在我们的情况下证明最有效的设置:

  • producer.override.batch.size: 1000000,
  • producer.override.linger.ms: 500,
  • producer.override.compression.type: lz4,

通过使用这些设置,我们能够实现25%的优化:从最初的8小时,我们将完整快照的时间缩短到了6小时(见图1)。在整个快照过程中,CPU消耗和JVM内存使用量都没有超过80%。
在这里插入图片描述
我特别观察了一个指标,即源记录的轮询速率。在我的测试中,这个指标作为一个有用的第一指示器,用于判断性能是好还是坏。正如图2所示,最大速率为每秒90k个操作。无论如何,我都无法达到更高的速率。同样重要的是,要查看其相邻的指标源记录写入速率,该指标应该显示几乎相同的图表:

在这里插入图片描述
如果轮询是正常的,但推送到Kafka的速度不够快,那么源记录活动计数可能是一个标识符。图3显示,在我们的情况下,我们不必担心任何阻塞情况

在这里插入图片描述
当然,我们尽力提高速度,并测试了一些其他设置和它们的组合。以下是结果:

  • 将snapshot.fetch.size更改为5000、50000或200000:没有改进
  • 将batch.size更改为800000或2000000:没有改进
  • 将linger.ms更改为10或100:没有改进
  • 将linger.ms更改为750或1000:导致更多时间花费在GC上
  • 将max.batch.size更改为4000或8000:没有改进
  • 将max.batch.size更改为8000,max.queue.size更改为16000,snapshot.fetch.size和query.fetch.size更改为50000:没有改进,更多时间花费在GC上,CPU消耗更高
  • 将poll.interval.ms更改为100:没有改进
  • 这些尝试都没有带来任何改进,大多数情况下速度反而更慢。将snapshot.max.threads的值设置为我们从中提取数据的表的总数也没有加速过程,而且由于对共享数据库资源的巨大负载,这种设置也很微妙。使用过多的并行线程,我们甚至遇到了连接器崩溃的情况,原因是“ORA-12801:在并行查询服务器中发生错误”。

相关文章:

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化 源数据库Kafka Connect监控测试结果 源数据库 Oracle 19c,本地,CDB数据库主机的I/O带宽为6 GB/s,由此主机上运行的所有数据库共享临时表空间由42个文件组成&#x…...

深度学习 Pytorch 基本优化思想与最小二乘法

在正式开始进行神经网络建模之前,我们还需要掌握pytorch中最核心的基础数学工具——autograd(自动微分)模块。虽然对于任何一个通用的深度学习框架都会提供许多自动优化的算法和现成的loss function,但如果想更深入理解神经网络,对深度学习的…...

C# 实现系统信息监控与获取全解析

在 C# 开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途。比如在系统性能优化工具中,需要实时读取 CPU、GPU 资源信息;在一些特殊的输入记录程序里,可能会涉及到键盘监控;而在图形界面开发中&#xf…...

Transformer详解:Attention机制原理

前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,本系列文章是作者参加DataWhale2025年1月份学习赛,旨在讲解Transformer模型的理论和实践。😲 本文将详细探讨Attention机制的原理…...

网络安全技术深度解析与实践案例

网络安全技术深度解析与实践案例 随着信息技术的飞速发展,网络已成为现代社会不可或缺的一部分。然而,网络空间的开放性也带来了各种安全隐患。为了保障网络和数据的安全,网络安全技术显得尤为重要。本文将深入探讨网络安全技术的核心要素,并通过Python代码示例展示其具体…...

JavaScript中提高效率的技巧一

1.生成随机颜色的两种方式 1).生成RandomHexColor const generateRandomHexColor () > {return #${Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, 0)} } generateRandomHexColor() // #a8277c generateRandomHexColor() // #09c20c generat…...

美食推荐系统 协同过滤余弦函数推荐美食 Springboot Vue Element-UI前后端分离

个性化美食推荐系统 协同过滤余弦函数推荐美食 Echart数据统计 Springboot Vue Element-UI前后端分离 【亮点功能】 1.SpringbootVueElement-UIMysql前后端分离 2.Echarts图表统计数据, 直观展示数据情况 3.发表评论后,用户可以回复评论, 回复的评论可以被再次回复,…...

ThinkPHP 8的一对多关联

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...

Django简介与虚拟环境安装Django

目录 1.Django简介 1.1 Django 的核心特点 1.2 Django 的核心组件 1.3 Django 的应用场景 1.4 总结 2.基础环境建立 2.1 创建虚拟环境 2.1.1 使用 virtualenv 创建虚拟环境 2.1.2 使用 venv 创建虚拟环境 2.2 激活虚拟环境 2.2.1 在 Windows 上 2.2.2 在 macOS 或 …...

Redis延迟队列详解

以下是对 Redis 延迟队列的详细解释: 一、什么是 Redis 延迟队列 Redis 延迟队列是一种使用 Redis 实现的消息队列,其中的消息在被消费之前会等待一段时间,这段时间就是延迟时间。延迟队列常用于一些需要延迟处理的任务场景,例如订…...

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用 1. 建议按文章顺序从头看是看 第一篇:一文大白话讲清楚啥是个webpack第二篇:一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建然后看本篇,Loader的配置…...

第二代增强-采购申请屏幕增强

这篇文章可能有点乱,但是都是学习的一个过程,问题就是在ME52N修改采购申请增强字段之后,点击保存之后无法更新到数据库,困扰了很久,终于解决了,特此记录 文章目录 需求创建增强结构测试屏幕ZXM02TOP创建屏幕…...

图论DFS:黑红树

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法:记忆化搜索DFS 算法&#xf…...

零基础一篇打通Vue极速通关教程

文章目录 写给零基础看的Vue极速掌握教程第1章 Vue简介1.1 Vue 概述1.2 MVVM 模式1.3 WebStorm开发工具1.3.1 WebStorm简介1.3.2 集成Vue开发调试工具 第2章 Vue的事件绑定2.1 Vue基本使用2.1.1 插值表达式2.1.2 注意事项 2.2 Vue事件绑定2.1.1 点击事件2.2.2 键盘事件2.2.3 移…...

商城系统中的常见 BUG

以下是商城系统中一些常见的 BUG: 功能与操作类 支付问题:如无法成功完成支付,支付过程中出现延迟、错误或订单重复支付等,还可能因网络问题导致支付失败或数据不一致。 登录 / 注册问题:用户在注册或登录时可能遇到…...

下定决心不去读研了。。。

大家好,我是苍何。 之前发表过一篇文章,表达了自己读研的困惑和纠结,得到了大家很多的建议,也引起了很多人的共鸣,在留言区分享了自己的故事,看着这些故事,我觉得都够苍何写一部小说了。 可惜苍…...

100个网络基础知识

1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示…...

庄小焱——2024年博文总结与展望

摘要 大家好,我是庄小焱。岁末回首,2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰,照亮了我前行的道路,也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…...

高通8255 Android STR 启动失败要因分析调查

目录 背景: 调查过程: 步骤1: slog2info | grep vmm_service 步骤2: slog2info | grep qvm 总结: 解决方案 背景: 调试高通8255 STR的STR过程中发现Android和QNX进入STR状态后,脱出STR时…...

Qt QML专栏目录结构

第1章 走进Qt Quick的世界... 4 ★1.4 Qt Quick应用... 4 ★1.5 Qt Quick UI项目(qmlproject工程) 4 第2章 QML语法... 4 ★2.2 import导入语句... 4 ★2.3 QML类型系统... 5 ★2.4 对象特性(Attributes)... 6 三个等于号JavaScript语…...

软考 系统架构设计师历年真题集萃(240)

接前一篇文章:软考 系统架构设计师历年真题集萃(239) 第472题 下面安全协议中,用来实现安全电子邮件的协议是( )。 A. IPSec B. L2TP C. PGP D.PPTP 正确答案:C。 所属知识点:系统安全分析与设计 -> 网络安全设计。 试题解析: PGP(Pretty Good Privacy),…...

边缘计算未来展望

边缘计算未来展望:重塑数字世界的智能边界 在万物互联的时代,数据洪流正以前所未有的速度增长。传统云计算的中心化处理模式已难以满足实时性、低延迟和隐私保护的需求,边缘计算应运而生,成为技术演进的关键方向。通过将计算能力…...

NAS+Docker+PostgreSQL:打造全平台同步的私有Joplin笔记服务器

1. 为什么选择私有化部署Joplin笔记服务 每次打开印象笔记时弹出的会员订阅弹窗,或是发现OneDrive同步又卡在某个小文件时,相信很多朋友都动过自建笔记服务的念头。三年前我也被这些问题困扰,直到在GitHub上发现了这个宝藏项目——Joplin&…...

需求管理中的需求分析优先级排序与变更控制

需求管理是软件开发与项目管理中的核心环节,而需求分析优先级排序与变更控制则是确保项目成功的关键。在资源有限、时间紧迫的情况下,合理分配需求优先级能够有效提升交付效率;严格的变更控制机制能避免需求蔓延导致的项目失控。本文将围绕这…...

手把手教你用Cartographer在Gazebo中实现室内导航:Ubuntu20.04详细教程

从零构建Gazebo室内导航系统:Cartographer在Ubuntu20.04的实战指南 当我们需要测试机器人导航算法时,直接使用实体机器人不仅成本高昂,还存在安全风险。Gazebo仿真环境配合Cartographer算法,为开发者提供了一个完美的室内导航解决…...

手把手教你用百度智能云微调大模型:从数据集准备到模型发布的保姆级避坑指南

手把手教你用百度智能云微调大模型:从数据集准备到模型发布的保姆级避坑指南 第一次尝试在百度智能云上微调大模型时,我踩遍了所有能想到的坑——从数据集格式错误导致反复上传失败,到闲时调度开关引发的莫名报错,甚至因为账户余额…...

SCD4X CO₂传感器Arduino驱动详解:光声传感与低功耗IAQ应用

1. 项目概述DFRobot_SCD4X 是专为 Sensirion SCD40/SCD41 数字式金属氧化物多气体传感器(SKU: SEN0536)设计的嵌入式驱动库。该传感器采用光声传感(Photoacoustic Sensing, PAS)原理,融合 Sensirion 自主研发的 PAsens…...

Windows平台下的高效BLE设备调试指南

1. Windows平台BLE调试入门指南 第一次接触BLE设备调试的开发者,往往会被一堆专业术语吓到——GATT、特征值、广播包、RSSI...其实在Windows平台上调试BLE设备,完全可以像玩积木一样简单。我刚开始做智能手环开发时,花了三天才搞明白怎么读取…...

2026年最值得玩的狼人杀,经典版口碑拉满

2026年市面上的狼人杀APP琳琅满目,但真正值得长期玩、口碑好的寥寥无几,而狼人杀经典版就是其中的佼佼者!它是2016年底国内第一款狼人杀APP,红色logo、平面卡通画风,玩家俗称“红狼”“口袋狼人杀”,由假面…...

JAVA找出哪个类import了不存在的类辣

一、中间件是啥?咱用“餐厅”打个比方 想象一下,你的FastAPI应用是个高级餐厅。 ?? 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名)来…...