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

TiDB TiKV 内存优化实战:从监控到配置的完整避坑指南

TiDB TiKV 内存优化实战从监控到配置的完整避坑指南当TiKV节点的内存占用突然飙升到80%以上整个集群的查询延迟开始以肉眼可见的速度增长作为DBA的你手心里是否已经捏了一把汗内存问题从来不是简单的参数调整而是一场需要精准诊断、快速响应和长期规划的运维战役。本文将带你穿透监控数据的表象直击内存问题的本质。1. 内存问题诊断从监控面板到真实瓶颈1.1 读懂监控指标的三重境界新手看总量老手看趋势专家看关联。Grafana面板上那些跳动的曲线背后隐藏着截然不同的故事基础层指标必须监控# 实时内存占用排行按RSS排序 ps -eo pid,cmd,%mem,rss --sort-rss | head -10tidb-server的%MEM突然增长可能是大查询或连接池泄漏tikv-server的RSS持续高位大概率是block-cache配置不当深度关联指标问题定位关键TiKV内存组成 RocksDB block-cache(60%) Raft log(20%) 读写缓冲区(15%) 其他(5%)通过curl http://tikv_ip:20180/debug/pprof/heap可以获取详细内存分配业务关联指标根本原因分析/* 查看最近1小时内存消耗最高的SQL */ SELECT digest_text, sum_mem FROM information_schema.statements_summary ORDER BY sum_mem DESC LIMIT 5;1.2 内存问题的五种典型模式通过200真实案例的统计分析内存异常通常呈现以下特征模式类型监控特征常见诱因紧急程度阶梯式增长内存曲线呈阶梯状上升大事务未提交★★★★★锯齿波动周期性高低起伏批量任务未分页★★★☆☆持续高位长期保持80%block-cache过大★★★★☆瞬间飙升毫秒级突增OOM前兆★★★★★缓慢泄漏每日增长2%-5%连接池未回收★★★☆☆诊断技巧当看到raftstore线程内存异常时立即检查raftdb的WAL文件大小这往往是批量导入引发的连锁反应2. 动态调优不重启服务的急救方案2.1 TiKV内存热更新四步法遇到生产环境内存告警时滚动重启应该是最后选择。以下是经过验证的动态调整方案紧急降压立即生效# 将block-cache从12GB降到8GB适用于写少读多场景 tiup ctl:v6.5 tikv --hosttikv_ip:20160 modify-tikv-config \ -n storage.block-cache.capacity -v 8GB检查效果观察3个监控周期# 查看实时内存回收情况 watch -n 1 grep block cache size /data/tidb-cluster/tikv-20160/logs/tikv.log | tail -1临时扩容应对突发流量# 临时增加内存限额注意不要超过物理内存的90% tiup ctl:v6.5 tikv --hosttikv_ip:20160 modify-tikv-config \ -n server.memory_usage_limit -v 85%策略调整预防二次告警# 限制单次Raft日志大小预防大事务 tiup ctl:v6.5 tikv --hosttikv_ip:20160 modify-tikv-config \ -n raftstore.raft-max-size-per-msg -v 1MB2.2 TiDB Server内存急救包当tidb-server出现内存问题时试试这些组合拳-- 立即终止消耗内存最多的会话慎用 KILL TIDB session_id; -- 清空执行计划缓存应对SQL内存泄漏 ADMIN FLUSH PLAN_CACHE;配合参数动态调整# 限制单条SQL内存使用默认1GB可降至512MB tiup ctl:v6.5 tidb --hosttidb_ip:10080 set-config -n mem-quota-query -v 512MB3. 长期配置从救火到防火的转变3.1 TiKV内存分配的黄金比例经过上百个生产集群验证的配置模板# tikv.yaml 关键配置 server: memory_usage_limit: 60% # 安全水位线 storage: block-cache: capacity: 45% # 读密集型可提升到50% shared: true # 多实例共享缓存 data_compression: zstd # 节省30%存储空间 raftstore: raft-log-gc-threshold: 1GB # 避免日志膨胀 performance: max-memory-gc-count: 8 # 激进内存回收配置要点每1TB数据盘预留2GB内存给RocksDB compactionPD调度器内存常被忽视建议单独限制pd-server.mem-limit使用numa绑核可降低15%内存延迟3.2 TiDB内存管理三维模型一个健壮的tidb-server配置应该考虑三个维度查询维度-- 设置全局内存阈值 SET GLOBAL tidb_mem_quota_query 8 30; -- 8GB会话维度# tidb.yaml performance: max-connections: 2000 # 连接数上限 prepared-plan-cache: enabled: true capacity: 2000 # 执行计划缓存数事务维度-- 大事务自动中止阈值默认10GB SET GLOBAL tidb_txn_mode optimistic; SET GLOBAL tidb_mem_quota_txn 4 30; -- 4GB4. 进阶技巧那些手册上不会写的实战经验4.1 内存压缩的黑科技当物理内存确实不足时可以启用这些隐藏武器# tikv.yaml storage: enable-memory-compression: true # 节省15%内存 compression-level: 3 # 平衡CPU与内存 rocksdb: bottommost-compression: zstd # 冷数据高压缩 cache-index-and-filter-blocks: false # 避免重复缓存效果对比压缩方案内存节省CPU增长适用场景默认lz45%-10%3%均衡型zstd15%-25%8%-12%内存紧张禁用压缩0%0%超高性能需求4.2 预防OOM的六道防线内核层防护# 启用earlyoom比系统oomd更快响应 yum install earlyoom systemctl enable --now earlyoomcgroup隔离# 为TiKV分配独立内存组 cgcreate -g memory:/tidb echo 50G /sys/fs/cgroup/memory/tidb/memory.limit_in_bytes监控熔断# 当内存90%时自动触发降级 tiup ctl:v6.5 pd --endpointspd_ip:2379 \ scheduler add evict-leader-scheduler --store-idtikv_idSQL防火墙-- 拦截内存消耗过大的SQL CREATE PLACEMENT POLICY mem_guard CONSTRAINTS [memorycritical];智能调度# 将大表Region迁移到空闲节点 pd-ctl operator add transfer-region --fromoverload_store --toidle_store快速逃生# 紧急情况下快速释放内存 echo 3 /proc/sys/vm/drop_caches在内存优化的道路上最贵的教训往往来自最意外的场景。上周刚处理过一个案例某客户在升级到TiDB 6.5后原本稳定的集群突然频繁OOM。最终发现是新版本的动态配置memory-usage-limit与老版本的storage.block-cache配置产生了冲突。这提醒我们每次版本升级后都要重新审视内存参数的相互作用。

相关文章:

TiDB TiKV 内存优化实战:从监控到配置的完整避坑指南

TiDB & TiKV 内存优化实战:从监控到配置的完整避坑指南 当TiKV节点的内存占用突然飙升到80%以上,整个集群的查询延迟开始以肉眼可见的速度增长,作为DBA的你手心里是否已经捏了一把汗?内存问题从来不是简单的参数调整&#xff…...

postgresql 根据文件夹id,一条sql语句获取到它本身及所有子文件、孙文件

PostgreSQL 是最早支持 递归公用表表达式 (Recursive CTE) 的主流数据库之一(从 8.4 版本开始,2009 年发布)。因此,在 PostgreSQL 中实现树形结构查询是其强项,语法稳定且功能强大。以下是两种方案:标准递归…...

高效小红书无水印下载工具:XHS-Downloader全场景应用指南

高效小红书无水印下载工具:XHS-Downloader全场景应用指南 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader …...

doris 根据文件夹id,一条sql语句获取到它本身及所有子文件、孙文件

取决于 Apache Doris 的版本。Apache Doris 是基于 MySQL 协议开发的 MPP 架构 OLAP 数据库。它的 SQL 兼容性在近年来提升很快,但递归查询的支持情况如下:1. 核心结论Doris 2.0 及以上版本: 支持。可以使用 WITH RECURSIVE 语法(…...

4个步骤打造无语言障碍的GitHub开发环境

4个步骤打造无语言障碍的GitHub开发环境 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 问题诊断:当代码世界遇上语言壁垒…...

mysql 根据文件夹id,一条sql语句获取到它本身及所有子文件、孙文件

取决于你的 MySQL 版本。MySQL 8.0 及以上版本: 可以。使用 递归公用表表达式 (Recursive CTE) 即可通过一条 SELECT 语句实现。MySQL 5.7 及以下版本: 原生不支持。标准邻接表模型(id, parent_id)无法用一条 SQL 查询无限层级。需…...

告别软件管家!IT运维用Winget实现企业级批量部署的3个高阶技巧(含排错指南)

企业级Winget实战:3个高阶技巧实现域环境批量部署 每次新员工入职,IT部门总要面对几十台电脑的软件部署任务。传统方式下,工程师们不得不抱着U盘穿梭于工位之间,或是远程指导用户点击"下一步"。这种低效模式正在被Winge…...

gerbv:制造业的隐形守护者——开源工具如何重塑制造文件验证流程

gerbv:制造业的隐形守护者——开源工具如何重塑制造文件验证流程 【免费下载链接】gerbv Maintained fork of gerbv, carrying mostly bugfixes 项目地址: https://gitcode.com/gh_mirrors/ge/gerbv 在精密制造领域,一个0.01毫米的设计偏差可能导…...

BJT放大器实战指南:从共发射极到共集电极的5个设计技巧

BJT放大器实战指南:从共发射极到共集电极的5个设计技巧 在电子设计领域,BJT(双极结型晶体管)放大器一直是模拟电路设计的核心组件。不同于教科书式的理论推导,本文将聚焦工程师在实际设计中最常遇到的挑战,…...

Unity 实现跨平台文件选择与图片加载:Windows 系统下的高效解决方案

1. 为什么需要跨平台文件选择功能 在Unity开发中,经常会遇到需要让用户选择本地文件的场景。比如图片编辑器需要导入素材,音乐播放器需要选择音频文件,文档工具需要打开特定格式的文件。虽然Unity本身提供了Application.OpenURL这样的方法&am…...

Qwen2-VL-2B-Instruct学术利器:LaTeX论文中的图表智能注释与摘要生成

Qwen2-VL-2B-Instruct学术利器:LaTeX论文中的图表智能注释与摘要生成 1. 引言 写论文最头疼的是什么?对我而言,除了构思核心论点,就是处理那些堆积如山的图表了。一张图,你得写图注;一个表格,…...

SHT20温湿度传感器嵌入式驱动开发与I²C通信详解

1. SHT20温湿度传感器技术解析与嵌入式驱动实现SHT20是由瑞士Sensirion公司推出的高精度数字温湿度传感器,基于其专利CMOSens传感技术平台。该器件将温度和湿度敏感元件、信号调理电路、14位ADC、IC接口及校准数据全部集成于单颗3mm3mm DFN封装内,实现了…...

从Raw到YUV:图解摄像头数据格式转换全流程(含ISP处理关键步骤)

从Raw到YUV:图解摄像头数据格式转换全流程(含ISP处理关键步骤) 在嵌入式视觉系统和智能摄像头的开发中,图像传感器输出的原始数据需要经过复杂的处理流程才能转化为可用的YUV格式。这个转换过程不仅关系到图像质量,还直…...

蓝桥杯密码学赛题全解剖:从AES爆破到RSA共模攻击的7种破解姿势

蓝桥杯密码学赛题深度解析:从AES到RSA的实战攻防艺术 1. 密码学竞赛的技术图谱与核心价值 在网络安全竞赛领域,蓝桥杯密码学赛道以其系统化的知识体系和贴近实战的题目设计,成为检验选手密码学功底的重要试金石。不同于常规CTF比赛中分散的…...

零成本打造专业直播系统:DroidCam OBS插件终极指南

零成本打造专业直播系统:DroidCam OBS插件终极指南 【免费下载链接】droidcam-obs-plugin DroidCam OBS Source 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam-obs-plugin 想要将手机摄像头变成高质量直播摄像头,却不想花大价钱购买专业…...

MCGS与S7-1200以太网通讯实战:从组态变量映射到DB块数据交换的最佳实践

MCGS与S7-1200以太网通讯实战:从组态变量映射到DB块数据交换的最佳实践 在工业自动化项目中,稳定高效的设备通讯是系统可靠运行的基础。MCGS组态软件与西门子S7-1200 PLC的以太网通讯,作为国内自动化领域常见的组合方案,其数据交换…...

wan2.1-vae镜像CI/CD流水线:GitHub Actions自动构建+GPU集群部署

wan2.1-vae镜像CI/CD流水线:GitHub Actions自动构建GPU集群部署 1. 项目背景与价值 在AI图像生成领域,快速迭代和稳定部署是关键挑战。wan2.1-vae作为基于Qwen-Image-2512模型的文生图平台,需要高效的构建和部署流程来支持其核心功能&#…...

Qwen-Image惊艳效果展示:RTX4090D上Qwen-VL高清图像理解与精准问答集锦

Qwen-Image惊艳效果展示:RTX4090D上Qwen-VL高清图像理解与精准问答集锦 1. 开篇:强大的视觉语言理解能力 当一张图片摆在面前,你是否想过让AI不仅能看懂画面内容,还能回答各种细节问题?这就是Qwen-VL视觉语言模型的魅…...

智能审稿监控工具如何解决技术文档追踪痛点:效率提升实测

智能审稿监控工具如何解决技术文档追踪痛点:效率提升实测 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 当技术文档工程师张明第5次在浏览器标签页中切换查找最新审稿状态时,他意识到这种工…...

终极免费Cookie导出工具:3分钟学会本地安全备份浏览器登录状态 [特殊字符]

终极免费Cookie导出工具:3分钟学会本地安全备份浏览器登录状态 🔒 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 你是否曾…...

nodejs+vue基于springboot的家庭物流车辆货车运输运营管理系统可视化qlxl72h7

目录技术栈选择系统模块设计开发步骤可视化集成测试与部署注意事项项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术栈选择 后端框架: Spring Boot 提供RESTful API支持,集成MyBatis或J…...

Navicat Mac版试用期管理方案:构建可持续的数据库工具使用环境

Navicat Mac版试用期管理方案:构建可持续的数据库工具使用环境 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 在数据库管理工作中,专业工具的持续可用是…...

League Akari智能辅助:颠覆英雄联盟玩家体验的全能工具集

League Akari智能辅助:颠覆英雄联盟玩家体验的全能工具集 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari Leagu…...

Asian Beauty Z-Image Turbo 集成MySQL实战:构建图像生成任务管理后台

Asian Beauty Z-Image Turbo 集成MySQL实战:构建图像生成任务管理后台 最近在帮一个做电商内容的朋友搭建一套AI图像生成系统,他们每天需要批量生成大量的商品展示图、社交媒体配图。直接用模型生成当然没问题,但问题很快就来了:…...

Qwen3.5-27B镜像免配置优势:预置FastAPI中间件支持CORS与限流控制

Qwen3.5-27B镜像免配置优势:预置FastAPI中间件支持CORS与限流控制 如果你正在寻找一个开箱即用、功能强大且部署省心的AI对话模型,那么Qwen3.5-27B镜像绝对值得你花10分钟了解一下。这个镜像最吸引人的地方,不是它背后那个能说会道、还能看懂…...

qmc-decoder:释放被锁住的音乐宝藏,让QQ音乐文件重获自由

qmc-decoder:释放被锁住的音乐宝藏,让QQ音乐文件重获自由 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾有过这样的体验?在QQ音…...

别再只会用ALTER USER了!PostgreSQL密码管理的5种隐藏技巧

PostgreSQL密码管理的5个高阶技巧:安全工程师不会告诉你的秘密 如果你还在用ALTER USER命令直接修改PostgreSQL密码,那么你可能错过了数据库安全防护中最关键的几个环节。作为一款企业级开源数据库,PostgreSQL提供了远比基础密码修改更强大的…...

皇冠CAD(CrownCAD2026R2):提取U/V线(等参数曲线)

根据给定的参数方向和参数值从曲面上提取出一条或多条曲面流线。根据给定的参数方向和参数值从曲面上提取出一条或多条曲面流线(等参考线),此曲面若为裁剪面,则提取的是其原始面上的流线。要生成的流线(等参数线&#…...

树莓派4B新手指南:从零搞定libcamera驱动的CSI摄像头

1. 树莓派4B与CSI摄像头初体验 第一次拿到树莓派4B和CSI摄像头时,我完全是个小白。看着那些密密麻麻的接口和配件,心里直打鼓——这玩意儿真的能用来做视觉项目吗?事实证明,只要按照正确步骤操作,从零开始配置一套完整…...

VScode+esp-idf:深入解析ESP32-CAM开发板SD卡文件系统操作

1. ESP32-CAM开发板与SD卡基础认知 第一次拿到ESP32-CAM开发板时,最吸引我的就是那个小小的SD卡槽。这个火柴盒大小的开发板竟然能拍照、录像还能存数据,简直就像个瑞士军刀。不过在实际操作中,我发现很多新手容易忽略几个关键点:…...