leojiang
(leojiang)
2020 年9 月 2 日 05:57
1
前提:
tidb版本v4.0.0
192.168.192.32、192.168.192.31两台tidb-server做的HA,都是8核64G
问题:
1、查看监控发现其中192.168.192.32内存使用量发生大的波动,之后因为oom重启(下面已截图)。该如何定位重启的原因是大查询导致,还是并发导致。如果是并发、大查询该如何定位?
2、按照这个时间段筛选,查看系统中记录的慢查询语句并没有过大的sql。
3、如果是大sql语句导致tidb-server重启,tidb是否会记录导致oom的大sql,如果不记录,那该以何种方式定位,是由哪个大查询导致的?
4、对于tidb-server,oom定位问题应该主要看哪些监控页面?
慢查询语句,按内存占用从大到小排列:
SELECT
DATE_FORMAT( Time, '%Y/%m/%d-%H:%i' ) AS '发生日期',
Digest as '指纹',
CONCAT( Query_time, '(秒)' ) AS '执行这个语句花费的时间',
-- Cop_wait_addr AS '等待时间最长的 cop-task 所在地址',
DB AS 'DB',
Request_count AS 'Cop请求数量',
Process_keys AS 'Cop处理的key的数量',
`Query` AS 'SQL语句',
CONCAT( Process_time, '(秒)' ) AS 'SQL在TiKV处理时间和',
CONCAT( Wait_time, '(秒)' ) AS 'SQL在TiKV等待时间和',
Mem_max / 1024 / 1024 AS 'sql使用的内存mb',
CONCAT( `User`, '@', `HOST` ) AS '谁执行的',
CONCAT( Backoff_time, '(秒)' ) AS '语句遇到错误,在重试前等待的时间',
( CASE succ WHEN '1' THEN '成功' ELSE '失败' END ) AS '是否执行成功',
Stats AS '统计信息时间戳,是否显示为pseudo'
FROM
information_schema.`slow_query`
WHERE
`is_internal` = FALSE -- 是否为 tidb 内部的 sql 语句
AND DB != ''
AND time BETWEEN '2020-09-02 02:30' AND '2020-09-02 02:57'
ORDER BY
Mem_max DESC
LIMIT 2000;
192.168.192.32tidb-server重启
查看192.168.192.32服务器,是因为内存溢出重启
1 个赞
来了老弟
2020 年9 月 2 日 07:02
2
leojiang
(leojiang)
2020 年9 月 2 日 07:10
3
多谢
1、看了,意思就是导致oom的原因还是无法定位是因为大查询引起的还是并发导致的是吧?
2、tidb-server只要重启了,在此期间没有运行完的sql是无法记录的是么?
1 个赞
leojiang
(leojiang)
2020 年9 月 8 日 08:53
5
问题:
1、事务日志的记录在哪里,如何查找事务日志。事务日志是commit之前记录还是之后记录?
2、Tidb是否可以开启临时表空间,像Oracle的临时表空间可以用来做查询和存放一些缓冲区数据,来减轻内存使用压力,把压力分散到磁盘上。
来了老弟
2020 年9 月 8 日 09:28
6
指的是什么
4.0 有类似设置。当超过某个阈值,将缓存结果放在磁盘上,可以看下 4.0 tidb 的配置文件参数说明
leojiang
(leojiang)
2020 年9 月 9 日 08:23
7
前提:
tidb是从3.0.11使用tiup升级到4.0.0版本
1、指的是sql的事务日志是否有记录,方便分析一个事务中执行了哪些sql,可以做手动回滚操作。
2、参数 oom-use-tmp-storage
, tmp-storage-path
tmp-storage-quota
这三个参数在配置文件中没有看到,需要手动修改配置文件添加么,如何设置生效。
在tiup主机上查看配置文件
做了一个sql的大查询,查看内存占用监控以上三个参数并没有生效
来了老弟
2020 年9 月 10 日 01:56
8
修改参数使用 tiup cluster edit-config 修改,reload生效,文档有提及,按照关键字搜索下。
genera log 看可以满足需求吗。
https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file
leojiang
(leojiang)
2020 年9 月 10 日 02:53
9
非常感谢:
1、我看是server级别的这个该如何生效,直接SET GLOBAL tidb_general_log
= 1就可以么,如果设置开启哪个参数可以控制这个日志的存储大小,以防日志保存过大?
2、参数修改是否以下这几个参数联合使用就可以,还有其他参数会有相关影响么
tiup cluster edit-config <cluster-name>
server_configs:
tidb:
mem-quota-query = 1073741824
oom-action = log
oom-use-tmp-storage = true
tmp-storage-path = "/tmp/<os/user.Current().Uid>_tidb/MC4wLjAuMDo0MDAwLzAuMC4wLjA6MTAwODA=/tmp-storage"
tmp-storage-quota = -1
生效
tiup cluster reload <cluster-name> -R tidb
来了老弟
2020 年9 月 10 日 06:31
10
一般线上不建议开启,有较大的性能影响。
这个具体问题具体看需要哪些参数,本次 oom 问题,可以使用以上参数缓解和记录
leojiang
(leojiang)
2020 年9 月 10 日 10:02
13
tiup cluster edit-config
如下为更改的参数已经生效
更改参数后执行了大查询语句发现跟更改之前并没有什么变化,还需要更改哪个地方能生效么?
来了老弟
2020 年9 月 10 日 12:06
14
要什么变化,tidb-server 有 oom 吗。
leojiang
(leojiang)
2020 年9 月 11 日 05:57
15
做了几个大的查询oom了,感觉并没有把查询压力分散到磁盘上。
来了老弟
2020 年9 月 11 日 06:40
16
mem-quota-query: 9663676416 (总内存的 40%)
tmp-storage-path 配置项去掉。使用默认值即可。
在执行个 14 G 左右的 sql 看下,默认路径下是否有临时文件产生。
leojiang
(leojiang)
2020 年9 月 11 日 06:47
17
mem-qutio-size: 9663676416 这个参数没找到,是哪个的配置参数啊
在没有配置这三个参数( oom-use-tmp-storage
, tmp-storage-path
tmp-storage-quota
)的时候我这边就看到了临时文件但是都是0
来了老弟
2020 年9 月 11 日 06:54
18
已更正,
没配置是 0 没问题的,配置了是 0 不正确了就。先调整参数看下吧。
leojiang
(leojiang)
2020 年9 月 11 日 07:13
20
前提:我的tidb是从3.0.11使用tiup升级到4.0.5版本
查看配置还是0,oom了