Apache Ignite 的 Pages Writes Throttling(页面写入节流)


🌟 一、什么是 Checkpointing(检查点机制)?

在 Apache Ignite 中:

  • 数据是先保存在内存中(RAM),然后异步写入磁盘。
  • 当数据被修改时,它首先被更新在内存中的“页”上(称为 Dirty Page 脏页)。
  • 这些脏页最终需要被持久化到磁盘文件中,以确保数据不会因节点宕机而丢失。
  • 这个将脏页从内存同步到磁盘的过程就叫做 Checkpointing(检查点机制)

📌 简单来说:Checkpointing 是把内存中修改过的数据定期刷到磁盘上。


⚠️ 二、为什么 Checkpointing 可能导致写性能下降甚至归零?

情况1:脏页在写入前又被修改了

  • 如果一个脏页在等待 checkpoint 写入磁盘的过程中再次被修改:
    • 它的旧状态会被复制到一个叫 Checkpointing Buffer(检查点缓冲区) 的特殊区域。
    • 这样做的目的是为了保证 WAL(Write-Ahead Logging)机制的一致性。

🔁 举个例子:
假设你修改了一个页 A,它变成脏页;
在它还没被 checkpoint 到磁盘前,你又改了一次;
那么第一次修改的内容必须被保留下来(放到 checkpoint buffer),以便将来恢复使用。

问题来了:

  • 如果很多页都在频繁修改,checkpoint buffer 就会迅速被填满。
  • 一旦 buffer 溢出(overflow),Ignite 就会 暂停所有写操作,直到当前 checkpoint 完成。
  • 结果就是:写入性能骤降为 0!

情况2:脏页比例达到阈值

  • 即使 checkpoint 正在运行,如果又有大量新的脏页产生,达到了系统设定的阈值:
    • Ignite 会 再次触发一个新的 checkpoint
    • 并且会 阻塞所有写操作,直到第一个 checkpoint 完成。

📌 所以,如果磁盘慢或写入压力大,就会不断出现这种情况,形成一种类似“链锯”的行为(Checkpointing Chainsaw)——不停触发 checkpoint、阻塞写入、再触发…


🧠 三、Pages Writes Throttling 是怎么解决这个问题的?

为了解决上面提到的写入性能骤降问题,Ignite 提供了 Pages Writes Throttling(页面写入节流) 机制。

它的工作原理如下:

  • 当 checkpoint buffer 快满了 或者 dirty page 比例快速上升时:
    • Ignite 主动 降低写入速度,让写入的速度不超过磁盘可以处理的能力。
  • 相当于给写入操作加上了一个“限速器”,不让它们太快地堆积在 checkpoint buffer 中。

类比理解:

想象你在高速公路上开车(写入操作),前方施工(checkpoint 处理慢)。如果不减速,就会堵死(buffer overflow → 停止写入)。

Throttling 就像是交通管制,告诉你:“别开太快,前面来不及处理。”


✅ 四、总结一下关键点:

概念含义
Dirty Page已在内存中修改但尚未写入磁盘的数据页
Checkpointing定期将内存中的脏页写入磁盘,用于持久化和恢复
Checkpointing Buffer存放脏页的旧版本,用于 WAL 日志一致性
Checkpointing Chainsaw不断触发 checkpoint 导致写入阻塞的现象
Pages Writes Throttling当写入速度过快时,自动限制写入速率,避免系统崩溃

💡 五、建议做法

如果你遇到写入性能波动剧烈、甚至中断的问题,可以尝试:

  1. 启用 Pages Writes Throttling(默认已启用)
  2. 调整相关参数
    • setCheckpointWriteOrder():控制是否顺序写
    • setThrottlingEnabled(true):显式启用节流
  3. 优化磁盘性能
    • 使用更快的 SSD
    • 避免磁盘 IO 成为瓶颈
  4. 合理设置 Checkpointing 时间间隔
  5. 监控脏页数量和 checkpoint buffer 使用情况

如果你有具体的配置、日志内容或性能表现,我可以帮你进一步分析和调优。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89581.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app 学习笔记:使用深度选择器修改第三方库组件的样式

在uni-app中,深度选择器(Deep Selector)是一个非常重要的概念,它允许父组件穿透样式隔离,从而修改子组件的内部样式。1.什么是uni-app深度选择器深度选择器是一种CSS选择器,用于穿透组件的样式隔离机制&…

物联网IOT平台到底是啥

物联网IOT平台:万物互联的智慧中枢清晨,智能闹钟轻柔唤醒你,咖啡机自动开始冲泡;离家时,空调自动关闭,安防摄像头启动;办公室内,生产线传感器实时回传设备状态,仓库管理系…

MySQL详解二

MySQL详解二索引主键索引唯一索引普通索引组合索引全文索引主键选择约束索引实现B树聚集索引辅助索引索引存储innodb 体系结构最左匹配原则覆盖索引索引下推索引失效索引原则索引 数据库中的数据是以记录为单位的,如果一条一条进行查找,几十万数据就已经…

深度学习中的模型剪枝工具Torch-Pruning的使用

Torch-Pruning(TP)是一个结构化剪枝框架,源码地址:https://github.com/VainF/Torch-Pruning,最新发布版本v1.6.0,License为MIT。 TP支持对各种深度神经网络进行结构化剪枝。与通过掩码将参数设置为零的torch.nn.utils.prune不同&a…

力扣-121.买卖股票的最佳时机

121.买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {int min prices[0];int max 0;for (int i 1; i < prices.length; i) {max Math.max(prices[i] - min, max);if (prices[i] < min) {min prices[i];}}return max;} }小结&#xff1a;贪…

lvs原理及实战部署

一、集群与分布式系统 1 集群 1-1概念 集群式架构是将多个相同或相似的节点组合在一起&#xff0c;形成一个逻辑上的 “整体”&#xff0c;对外提供统一的服务或资源。节点之间通常具有较高的同构性&#xff08;硬件、软件配置相似&#xff09;&#xff0c;且紧密协作。 1-2 三…

[Linux]如何設置靜態IP位址?

自從將Ubuntu Server 24.04 LTS作業系統建置在VM上後&#xff0c;逐漸導入一些容器和微服務器並使可由其他Client端來連接使用&#xff0c;其中包含AIGC模型和自動化工作流等服務&#xff0c;例如Open-WebUI和n8n。然而&#xff0c;若VM重新開機或路由器因故斷電等等狀態&#…

【Leecode 随笔】

文章目录题目一&#xff1a;盛最多水的容器题目描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1a;深入剖析&#xff1a;题目二&#xff1a;最长无重复字符的子串题目描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1…

Springboot项目应用PageInfo分页问题失效

使用github的pagehelper分页依赖<!-- 分页控件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.0</version><scope>compile</scope></dependency&…

【无标题】标准模型粒子行为与11维拓扑量子色动力学模型严格对应的全面论述

标准模型粒子行为与11维拓扑量子色动力学模型严格对应的全面论述标准模型粒子与拓扑结构的严格对应 mermaid graph LRsubgraph 标准模型粒子A[费米子] --> A1[夸克]A --> A2[轻子]B[玻色子] --> B1[规范玻色子]B --> B2[希格斯]endsubgraph 11维拓扑模型C[实体顶点…

SQL一些关于存储过程和使用的总结

存储过程&#xff1a;数据库里的 "定制工具箱"存储过程就像一个装满工具的箱子&#xff0c;你需要什么功能&#xff0c;就调用对应的工具。它是用 SQL 语句写好的一段程序&#xff0c;存储在数据库里&#xff0c;随时可以调用。创建存储过程 就像在工具箱里放新工具。…

springCloud -- 微服务01

目录 一、认识微服务 1.单体架构 2.微服务 3.SpringCloud 二、微服务拆分 1.服务拆分原则 2.服务调用 3. RestTemplate 三、服务注册和发现 1. 注册中心原理 2. 服务发现 2.1 服务注册 2.2 服务发现 四、OpenFeign 一、认识微服务 1.单体架构 单体架构就是整个项目中所有功能…

Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring 论文阅读

用于动态场景去模糊的深度多尺度卷积神经网络 摘要 针对一般动态场景的非均匀盲去模糊是一个具有挑战性的计算机视觉问题&#xff0c;因为模糊不仅来源于多个物体运动&#xff0c;还来源于相机抖动和场景深度变化。为了去除这些复杂的运动模糊&#xff0c;传统的基于能量优化的…

PDF 拆分合并PDFSam:开源免费 多文件合并 + 按页码拆分 本地处理

各位打工人和学生党们&#xff0c;你知道吗&#xff0c;处理PDF文件简直是咱们的日常噩梦啊&#xff0c;尤其是遇到要合并好几个文件&#xff0c;或者从中抠几页出来的时候&#xff0c;简直头大如斗&#xff01;今天给你们安利一个神仙工具&#xff0c;PDFSam&#xff0c;听我的…

AI产品经理面试宝典第32天:AI+工业场景落地核心问题与应答策略

一、AI+工业落地价值怎么答? 面试官:AI在工业领域能创造哪些核心价值?请用具体案例说明 你的回答: AI在工业领域创造价值的底层逻辑是"数据闭环"。以阿里云ET工业大脑为例,通过采集生产线3000+传感器数据,构建出影响良品率的60个关键变量模型。当数据流经AI…

【09】MFC入门到精通——MFC 属性页对话框的 CPropertyPage类 和 CPropertySheet 类

文章目录九、属性页对话框的类CPropertyPage类 和 CPropertySheet 类。9.1 CPropertyPage 类&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;CancelToClose()函数&#xff08;3&#xff09;SetModified()函数&#xff08;4&#xff09;可重载函数9.2 CPropertyShe…

Python学习笔记4

时间:2025.7.18学习内容&#xff1a;【语法基础】if判断、比较运算符与逻辑运算符一、if判断if判断基本格式&#xff1a;if要判断的条件&#xff0c;条件成立时要做的事情注意&#xff1a;input内默认存储的是字符串age17 if age<18:print(未成年不能上网) scoreinput(你的成…

20250718-2-Kubernetes 应用程序生命周期管理-Pod对象:基本概念(豌豆荚)_笔记

二、Kubernetes应用程序生命周期管理&#xfeff;1. 课程内容概述主要内容&#xff1a;Pod资源共享实现机制管理命令应用自修复&#xff08;重启策略健康检查&#xff09;环境变量Init container静态Pod2. Pod对象介绍&#xfeff;1&#xff09;Pod基本概念&#xfeff;&#x…

为Notepad++插上JSON格式化的翅膀

文章目录概要安装步骤效果展示概要 JSMinNPP.dll 是一个 Notepad 插件&#xff0c;用于压缩 JavaScript 代码和格式化JSON字符床。以下是安装和使用的详细步骤&#xff1a; 安装步骤 下载 JSMinNPP.dll 插件 https://pan.quark.cn/s/73dd0ac225be 放置 DLL 文件 打开 Notepa…

STM32-第七节-TIM定时器-3(输入捕获)

一、简介&#xff1a;1.名称&#xff1a;IC&#xff0c;输入捕获2.电路&#xff1a;如图为通用定时器框图&#xff0c;下半部分的左半模块&#xff0c;与输出比较部分共用捕获/比较寄存器与引脚。3.功能&#xff1a;当通道输入引脚出现电平跳变时&#xff0c;当前CNT的值&#…