Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TiDB OOM问题 学习笔记(纯干货)

TiDB OOM问题 学习笔记(纯干货)

作者头像
AsiaYe
发布于 2022-01-25 10:47:01
发布于 2022-01-25 10:47:01
1.3K0
举报
文章被收录于专栏:DBA随笔DBA随笔

TiDB OOM问题 学习笔记

TiDB使用过程中,OOM最常发生在tidb组件和tikv组件。

(这里我用大写TiDB代表TiDB数据库,小写的tidb代表tidb组件。下同)

今天分别来看这两个组件发生OOM的整个排查思路。

01

tidb组件OOM问题

1、如何诊断OOM?

1.1 客户端一般通过tidb来连接TiDB集群,一般OOM之后可能会出现Lost Connection to MySQL Server during query

1.2 通过日志分析

  1. dmesg -T | grep tidb-server 查看系统日志,在日志中可以发现OOM-Killer日志;
  2. tidb.log中,故障时间点存在Welcome to TiDB字样的日志,代表TiDB重启过;
  3. tidb_stderr.log通过grep可以看到runtime:out of memory或者cannot allocate memory字样

1.3 查看grafana监控

TiDB--Server---Memory Usage面板明显增高;

TiDB--Server---Uptime确认最新的tidb运行时间;

2、tidb组件OOM原因?

2.1 SQL语句的执行

2.2 Golang内存释放机制

3、OOM解决办法

3.1 处理慢SQL

慢SQL定位方法

  1. 定位内存大的SQL,并进行优化
  2. TiDB Dashboard SQL分析
  3. TiDB Server日志中的expensive Query

慢SQL优化方法

  1. SQL优化,减少非必要返回的数据量(创建索引,强制使用索引等)
  2. 减少大事务,将大事务拆分成小事务
  3. 调整tidb server的相关参数,从而限制单条SQL 内存的使用(包含 限制单条内存 mem-quota-query参数、oom-action参数;临时磁盘参数oom-use-tmp-storage、tmp-storage-path、tmp-storage-quota等)

3.2 调整Go 内存释放策略

Go语言有两种内核的内存释放策略,分别是MADV_DONTNEED和MADV_FREE,后者是前者的改版,后者释放的内存更多,但是释放的慢(惰性释放),前者释放的内存较少,但是释放的很快(积极释放)

3.3 滚动重启TiDB Server回收内存。

02

tikv组件OOM问题

1、tikv OOM对业务的影响?

1.1 tikv上请求失败造成异常退出

1.2 region leader 重新选举,影响性能

1.3 region cache重新更新,PD将最新的region leader信息更新给tidb server的region cache

2、tikv OOM诊断方法?

2.1 日志

dmesg -T | grep tikv-server 系统日志中的OOM-killer日志

tikv.log 宕机前后时间的Welcome to TIKV日志,也就意味着tikv重启了

2.2 grafana监控

tikv--Detail--Cluster--Memory查看内存使用情况(一般是先到峰值,然后迅速到0,意味着重启)

3.tikv OOM的原因?

3.1 block-cache配置不当导致OOM

3.2 Coprocessor接受大量大查询,返回的数据量很大,gRPC的发送速度跟不上Coprocessor往外输出的速度,导致数据堆积在tikv里面,内存溢出(具体是查看tikv--Detail--Coprocessor Overview --Total Response Size 监控图,是否已经大于Node_exporter--Network--Network In/Out Traffic监控图的值,如果大于,说明是这个原因)

3.3 其他进程占用太多内存

4、OOM优化方法?

4.1 storage.block-cache.capacity,这个值大概配置成总内存的45%~60%左右,tidb-4.0.13版本之后可以支持动态调整

4.2 SQL优化,根据业务逻辑和执行计划来优化SQL,尽量少查询数据,避免gRPC的发送速度跟不上Coprocessor往外输出的速度

4.3 网卡配置升级(千兆升级万兆等等)

4.4 避免其他组件和当前组件混部

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TiDB 2.0 GA Release
2018 年 4 月 27 日,TiDB 发布 2.0 GA 版。相比 1.0 版本,对 MySQL 兼容性、系统稳定性、优化器和执行器做了很多改进。
PingCAP
2018/04/28
1.9K0
TiDB 3.0.0-rc.1 Release Notes
2019 年 5 月 10 日,TiDB 发布 3.0.0-rc.1 版,对应的 TiDB-Ansible 版本为 3.0.0-rc.1。相比 3.0.0-beta.1 版本,该版本对系统稳定性、易用性、功能、优化器、统计信息以及执行引擎做了很多改进。
PingCAP
2019/05/13
8720
TiDB 在摩拜的深度实践及应用
摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务的不断发展,TiDB 版本快速迭代,我们将 TiDB 在摩拜单车的使用场景逐渐分为了三个等级:
用户5927304
2019/07/31
9450
TiDB 在摩拜单车的深度实践及应用
摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务的不断发展,TiDB 版本快速迭代,我们将 TiDB 在摩拜单车的使用场景逐渐分为了三个等级:
PingCAP
2019/02/19
1.1K0
linux out of memory分析(OOM)
原文:http://blog.csdn.net/guomsh/article/details/6536915
一见
2019/03/14
9K0
TiDB 3.0 GA Release Notes
2019 年 6 月 28 日,TiDB 发布 3.0 GA 版本,对应的 TiDB Ansible 版本为 3.0.0。
PingCAP
2019/06/29
8900
TiDB 查询优化及调优系列(五)调优案例实践
本篇文章为 TiDB 查询优化及调优系列的最终篇,主要汇集了一些用户常见的 SQL 优化案例,从背景、分析、影响、建议、实操几个角度进行解析。关于 SQL 调优原理的介绍见前面章节。
PingCAP
2022/05/30
7640
The lifecycle of a SQL in TiDB
1. 当Sql进入TiDB时先获取Token,事务开始时获取Start TS (异步方式获取)
杨漆
2021/02/04
7200
The lifecycle of a SQL in TiDB
TiKV Raft Store 内存管理的原理与实现丨TiKV 源码解读(二十三)
内存管理是数据库系统不可忽视的核心问题之一,它直接影响系统的性能、稳定性和成本效率。
PingCAP
2024/11/27
1610
TiKV Raft Store 内存管理的原理与实现丨TiKV 源码解读(二十三)
带你重走 TiDB TPS 提升 1000 倍的性能优化之旅
今天我们来聊一下数据库的性能优化,第一部分简单介绍一下性能优化的通用的方法,第二部分我们讲一个实际案例。
PingCAP
2021/12/07
1K0
TiDB 2.1 GA Release Notes
2018 年 11 月 30 日,TiDB 发布 2.1 GA 版。相比 2.0 版本,该版本对系统稳定性、性能、兼容性、易用性做了大量改进。
PingCAP
2018/11/30
7890
tikv和tidb_tidb优缺点
TiKV 最底层使用的是 RocksDB 做为持久化存储,所以 TiKV 的很多性能相关的参数都是与 RocksDB 相关的。TiKV 使用了两个 RocksDB 实例,默认 RocksDB 实例存储 KV 数据,Raft RocksDB 实例(简称 RaftDB)存储 Raft 数据。
全栈程序员站长
2022/09/29
8950
最佳实践:TiDB 业务读变慢分析处理
在使用或运维管理 TiDB 的过程中,大家几乎都遇到过 SQL 变慢的问题,尤其是查询相关的读变慢问题。读变慢的问题大部分情况下都遵循一定的规律,通过经验的积累可以快速的定位和优化,不好排查的问题需要从读 TiDB 的每个过程一一排查和分析处理。
PingCAP
2023/08/30
3120
最佳实践:TiDB 业务读变慢分析处理
TiDB 4.0 新特性在电商行业的探索
分库分表是一个非常普遍的问题,会增加我们业务逻辑的复杂性,并且多维度的 mapping 可能导致我们整体性能的下降。有了 TiDB 我们可以不用再考虑分库分表,不再需要写那么多的复杂逻辑。
PingCAP
2020/08/04
5040
TiDB 4.0 新特性在电商行业的探索
理想汽车 HTAP 读流量优化指南
郑赫扬(艺名:潜龙),理想汽车 DBA。负责公司分布式数据库的技术探索和业务场景落地,热爱开源。就职于金融、互联网教育、电商、新能源汽车等领域。
PingCAP
2021/11/05
6200
TiDB 5.0 RC Release Notes
TiDB 5.0.0-rc 版本是 5.0 版本的前序版本。在 5.0 版本中,我们专注于帮助企业基于 TiDB 数据库快速构建应用程序,使企业在构建过程中无需担心数据库的性能、性能抖动、安全、高可用、容灾、SQL 语句的性能问题排查等问题。
PingCAP
2021/01/21
1.1K0
手把手教你搭建Tidb最新版4.0集群
TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP cluster 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP cluster 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级 TiDB 集群、管理 TiDB 集群参数。
杨漆
2021/03/18
1K0
手把手教你搭建Tidb最新版4.0集群
最佳实践:TiDB 业务写变慢分析处理
在日常业务使用或运维管理 TiDB 的过程中,每个开发人员或数据库管理员都或多或少遇到过 SQL 变慢的问题。这类问题大部分情况下都具有一定的规律可循,通过经验的积累可以快速的定位和优化。 但是有些情况下不一定很好排查,尤其涉及到内核调优等方向时,如果事先没有对各个组件的互访关系、引擎存储原理等有一定的了解,往往难以下手。
PingCAP
2023/09/20
3520
最佳实践:TiDB 业务写变慢分析处理
[学习笔记] TiDB学习笔记(二)
本文是《极客时间》-《TiDb极简入门》的学习笔记。传送门:https://time.geekbang.org/opencourse/videointro/100089601
菜刀兔
2021/12/30
8850
生产环境TiDB 5.0集群部署
最近是沉迷于TiDB,无法自拔,从TiDB集群部署到集群压测、高可用测试、再到参数调优,最后到线上业务从MySQL迁移到TiDB,整个过程下来,感觉整个学习成本还是比较高,不管是TiDB还是分布式数据库,要学习的内容还是非常的多;本文主要分享生产环境部署TiDB v5.0.3版本集群过程,供大家参考学习;
SEian.G
2021/08/25
1.4K0
相关推荐
TiDB 2.0 GA Release
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档