tidb和tikv节点cpu压力升高,系统出现间歇性卡顿

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
v4.0.9
【问题描述】
监控显示tidb和tikv节点cpu压力升高,系统出现间歇性卡顿。麻烦各位大神们帮忙排查一下。谢谢。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

  1. 确认业务负载高峰期的时间与集群 CPU 上升时间是否符合
  2. 排查压力升高时间点时候的慢日志情况,看下是否有比较耗时或者耗资源的 SQL 影响
  3. 排查操作系统日志看下是否有异常,排除操作系统层面引起的影响

从你提供的描述以及监控信息看,只能了解到操作系统的 CPU 资源和 IO 资源的确有某几个时间点比较高。只能确认现象。建议补充一下自己已经尝试过的排查方向、结果及结论,方便别人给出进一步的排查建议。

谢谢解答,补充如下:
1、业务负载高峰期的时间与集群CPU上升时间不相符,业务高峰的时候反而还算正常(因为我们业务量还是很低)。
2、升高时间点时候的慢日志,确实是存在慢查询。一条简单的sql,且where条件只有一个主键的,都会被记录到39秒+
3、操作系统日志,看/var/log/syslog ,没发现异常。实例只用作tidb

  1. 如果可以的话,可以提供一下升高时间点的慢日志文件(每个 tidb 节点),如果有敏感信息不方便提供的话,可以参考这个文档自己看下慢日志分析:读性能慢-慢语句
  2. 可以提供一下升高时间点的监控信息,需要 Overview / TiKV-Details / TiDB / PD 几个监控面板的数据,监控数据导出使用:https://metricstool.pingcap.com/

你好,这里是升高的其中一个时间点的监控信息,麻烦看下。
zmd-cluster-PD_2021-02-19T09_55_12.502Z.json (586.9 KB)
zmd-cluster-TiDB_2021-02-19T09_54_18.029Z.json (920.7 KB)
zmd-cluster-TiKV-Details_2021-02-19T09_51_22.642Z.json (3.7 MB)
zmd-cluster-Overview_2021-02-19T09_48_42.211Z.json (471.8 KB)

麻烦也看看 slowlog 在升高时间点是否有慢 SQL ,方便的话可以给一些升高时间点,完整的慢 SQL 进行分析。

  1. 提供的 overview 面板的监控时间与其他几个面板的监控时间不一致,可以重新导下么
  2. 系统出现间歇性卡顿,这个指的是应用访问数据库的请求间歇性出现 duration 升高么?还是指操作系统?

你好,300ms以下的慢查询稍微有点多。我选几个私信给你。

你好:
1.我重新导了一份2021-02-19 20:00:44至2021-02-19 20:03:44时间点的监控。麻烦帮忙看下,谢谢。
2.系统出现间歇性卡顿,指的是我们的应用:saas多租户系统。用户开销售单、查询订单、库存等业务时卡住了加载不出来(可以排除应用服务器的问题)。
zmd-cluster-PD_2021-02-20T01_40_26.241Z.json (257.1 KB)
zmd-cluster-TiDB_2021-02-20T01_29_01.623Z.json (355.2 KB)
zmd-cluster-TiKV-Details_2021-02-20T01_26_39.376Z.json (1.7 MB)
zmd-cluster-Overview_2021-02-20T01_23_59.923Z.json (181.7 KB)


从 Duration 的监控看,是有上升,但是 999 线也只是到秒级别,应该不至于导致应用加载不出来,可以修改一下监控表达式,设置为 1 看下 max 的 duration 线是怎么样的

如果 max 的 duration 也有不高,那说明数据库访问应该是正常的的,卡住的环节可能是在别的环节上。

我们在二月初的时候把三台kv服务器的CPU和内存升了一倍。上面提供的2月19号的监控,确实是卡得不明显,但如果不升配置的话这个CPU内存使用率是会出现应用加载不出来的情况。卡顿出现在1月份刚上tidb的大半个月。我上一份监控提示的是1月27号的,卡顿的时间点,overview 面板的监控时间稍微长一些

请问下,可以修改一下监控表达式,设置为 1 这个是怎么设置的?有文档教程吗? histogram_quantile


点一下下拉箭头进 edit 就行

你好,我设置了监控表达式,设置为 1 。麻烦帮忙诊断下:
2021-02-19 20:00:44至2021-02-19 20:03:44时间点的:

2021-01-27 17:00:44至2021-01-27 20:03:44时间点的:

那可以结合当时的慢日志文件进行分析一下:读性能慢-慢语句

那意思是慢查询语句导致的卡顿吗?可是我们的应用慢查询不多并发也不高,之前mysql单机虽然慢了点但是可以抗得住。

duration 上升是现象,是借助慢日志这个手段去定位当时是慢在哪,尝试看能不能找到原因并解决。