TIKV大量报 get snapshot failed,Request(message: \"to store id 5, mine 4\" store_not_match

v4.0.13,tikv刷大量此日志,每分钟几个G无限刷,pd leader cpu 90%多,应该是有大量数据在往tiflash同步,但是为啥tikv无限刷这种日志,20个G瞬间满,清理了又瞬间满

2021/10/28 15:24:03.919 +00:00] [INFO] [process.rs:136] [“get snapshot failed”] [err=“Request(message: "to store id 5, mine 4" store_not_match { request_store_id: 5 actual_store_id: 4 })”] [cid=1520390105]

可以设置loglevel为error,就不会记录info的日志了

https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#log-level

这。。。 这不是治标不治本吗。。。问题是为什么会无限刷这种日志,关键词:无限的在刷
且该节点tikv的cpu持续在50%,pd leader cpu 90%以上,从昨晚持续到现在

pd leader 日志:


pd_log.tar.gz (14.7 MB)

是突然出现的这种情况,还是之前做了什么操作?
能否描述一下场景,这样可以帮助排查问题

好像没啥特别的操作,主要的是 tiflash挂了两台,我们把tiflash副本关掉后缩容再扩容回来,然后重新同步tiflash,最开始好像没啥事的,过了3-4个小时开始突然狂刷这种日志,无限的刷,磁盘瞬间被打爆,cpu也一直下不来,后来tiflash都同步完了,这又过了3个多小时了,还是在狂刷这个日志,cpu还是没下来,看pd leader日志感觉好像也没啥任务,但是cpu就是特别高,我把pd leader 这个节点重启了下,pd leader 换到别的节点了,别的节点cpu也飚到80%了,现在已经没有tiflash同步了,还是有问题

应该就是这个tikv在无限请求pd获取snapshot,所以 pd leader 和tikv cpu都很高吧,为什么会出现这种现象呢,现在怎么解决呢

pd 和 tidb,都在一个节点上么?
你有几个 pd 和tidb的节点,有没有结构拓扑?

之前是几个tiflash,下线tiflash需要确保 TiFlash 集群剩余节点数大于等于所有数据表的最大副本数,否则需要修改相关表的 TiFlash 副本数。
并且如果什么都不修改,缩容再扩容之后,tiflash还是之前的。我遇到过,比如我缩容,没有等pending结束,直接清空服务器tiflash数据文件,重新扩容,这个时候监控里还是显示节点正在下线。

top -H -p 5285看下呢,另外kv节点也看下,看看具体的cpu耗费在哪里

不在一个节点,

我是把所有tiflash 副本都去掉后,才缩容的,跟tiflash关系不大应该,看下面的tikv 监控图

tikv:





pd:


是的,这个操作没有问题, tikv的grpc有问题,但是不知道怎么解决

老师,有啥结论吗,为啥该tikv的grpc这么高呢

@yilong @spc_monkey @Lucien 请求协助

暂时看不出来,grpc高应该是有大量tikv的调度,下推情况,看你的unified-read-po不多,应该不是读热点造成的,可能是和tiflash有关,tikv的region频繁调度,或者同步到tiflash,可以看看tiflash的同步进度情况,具体还是看产研大佬怎么回吧

没有向tiflash同步,并且如果是往tiflash同步,tikv应该是有读热点,二来也不应该只有一个tikv单独的不正常

确认一下网络带宽环境是 千兆 ?还是 万兆 网络 ? 请求 store 5 snapshot 失败,可能原因比较多。可能的原因是网络带宽打满,或者 snapshot size 太大了,都有可能。现在对业务的影响是什么 ?除了大量刷 log 以外占用空间以外。

千兆网络,这个是pd leader的 网络情况

业务影响目前来看没有,就是无限的刷log,量非常大,20G瞬间满,且84这台tikv和 12这台pd leader cpu非常高,担心有大SQL打过来直接挂了

snapshot size 太大怎么确定, 为啥这个tikv 一直无限的请求snapshot,现在怎么解决

打个比方,regions 的大小一般在 96MB,如果千兆网络,刚好把网络打满了,会造成心跳无法传递,出现假死的情况,然后调度也会失败。

你可以参考下面的操作:
https://docs.pingcap.com/zh/tidb/stable/tikv-control#查看-region-的大小

看看region的大小 (store 5 snapshot )

Store

PD 中的 Store 指的是集群中的存储节点,也就是 tikv-server 实例。Store 与 TiKV 实例是严格一一对应的,即使在同一主机甚至同一块磁盘部署多个 TiKV 实例,这些实例也对会对应不同的 Store。

查询 store下面所有的 region
https://docs.pingcap.com/zh/tidb/stable/pd-control#region-store-store_id

这个命令只能看单个region的大小吧,我们几万个region怎么弄,我们可不可以先给出解决办法呢?