【 TiDB 使用环境】生产环境
【 TiDB 版本】8.1.0
【遇到的问题:问题现象及影响】
K8S部署的Tidb集群,这里统计的CPU是节点的avg/max使用率么?在16:20分对tidb实例做了扩容,反而这里的使用率变高了。16:40分缩容了,这里反而降了。是因为什么呢?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
【 TiDB 使用环境】生产环境
【 TiDB 版本】8.1.0
【遇到的问题:问题现象及影响】
K8S部署的Tidb集群,这里统计的CPU是节点的avg/max使用率么?在16:20分对tidb实例做了扩容,反而这里的使用率变高了。16:40分缩容了,这里反而降了。是因为什么呢?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
扩容后再 gc 时间内,可能会有一个调度均衡的情况出现,这个时候 cpu 会疯狂计算,所以可能会略高一些。
我怀疑这个其实显示的 tikv 的 CPU 利用率,有可能启动的时候,需要回源一些 meta 信息,所以看起来是高了,你缩容的时候,就这部分需要回源的 tidb 去掉了,所以就降下去了。
你看一下 tidb cluster 的监控面板里 statstics 里面 sync load 是不是在扩容的时候,QPS变高了,缩容的时候变小了。
另外看一下这个CPU走势和 tikv 的CPU 监控是否吻合
我觉得这是正常的,因为增加节点可以提高系统的处理能力,从而允许更多的并发请求和更高的事务处理量。增加更多的 TiDB 节点时,系统能够处理更多的请求,从而导致 CPU 使用率的增加。
以下是一些可能导致 CPU 使用率变化的原因:
扩容对资源的影响:当您对 TiDB 实例进行扩容时,新的实例需要一定的时间来启动并加入到集群中。在启动过程中,可能会有额外的资源消耗,包括 CPU,这可能导致您观察到的 CPU 使用率上升。一旦扩容完成,新的实例开始分担负载,可能会使得 CPU 使用率下降。
负载均衡:扩容后,TiDB 集群可能会自动进行负载均衡,将请求分散到新的实例上,这可能会导致短期内 CPU 使用率的上升,但随着负载的均衡,使用率会逐渐下降。
数据迁移:在扩容过程中,可能会涉及到数据的重新分布,特别是对于 TiKV 这类存储组件,数据迁移可能会导致 CPU 使用率的短暂上升。
调度和亲和性设置:Kubernetes 的调度器会根据节点的资源使用情况和亲和性设置来调度 Pod。如果新的实例被调度到了资源紧张的节点上,可能会加剧 CPU 使用率的上升。
监控数据的延迟:监控系统可能会有一定的数据延迟,您观察到的 CPU 使用率变化可能并不是实时的,而是一段时间内的平均值或最大值。
资源竞争:在 Kubernetes 集群中,不同的 Pod 之间可能会存在资源竞争,特别是在资源紧张的情况下。当新的实例加入时,可能会与其他 Pod 竞争 CPU 资源,导致使用率上升。
系统负载的变化:系统负载的变化也会影响 CPU 使用率。如果在扩容或缩容的同时,业务负载也在变化,这可能会影响 CPU 使用率的观测结果。
1、在扩容时,新的 TiDB 实例可能还没有完全同步数据或者稳定运行,导致初始负载较高。
2、扩容后,新的实例可能需要处理更多的请求,或者需要进行数据同步,这会增加 CPU 使用率