索引查询耗时异常高

【 TiDB 使用环境】
CentOS-7 官方最低推荐集群部署配置(3PD+3TIDB+3KV+MONITOR)

【TiDB 版本】
Release Version: v4.0.0
Edition: Community
Git Commit Hash: 689a6b6439ae7835947fcaccf329a3fc303986cb
Git Branch: heads/refs/tags/v4.0.0
UTC Build Time: 2020-05-28 01:37:40
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false

【概述】 场景 + 问题概述

业务上线稳定5个月后,非高峰期情况下,今天8-10点出现2个小时TiKV 3个节点CPU负载及IO负载比较高,8000W数据量,索引查询耗时非常多。

【背景】 做过哪些操作

近期无版本更新,无业务量新增

【现象】 业务和数据库现象
慢查询日志:

# Time: 2021-09-27T08:32:24.860844308+08:00
# Txn_start_ts: 428003196946350106
# User: user
# Conn_ID: 779979
# Query_time: 119.749504109
# Parse_time: 0.000125808
# Compile_time: 0.000537373
# Cop_time: 239.571195613 Process_time: 2.221 Wait_time: 2.6870000000000003 Backoff_time: 0.29     Request_count: 171 Total_keys: 151764 Process_keys: 151024
# DB: table
# Index_names: [table:yyy]
# Is_internal: false
# Digest: 6d97f0b0b5bf53a05ea3361cfab4a8c79fbca3c7a05a1cb0d82dfae16dc8d299
# Stats: table:428003035059322910
# Num_cop_tasks: 171
# Cop_proc_avg: 0.012988304 Cop_proc_p90: 0.017 Cop_proc_max: 0.138 Cop_proc_addr: 10.74.198.27:20160
# Cop_wait_avg: 0.01571345 Cop_wait_p90: 0.028 Cop_wait_max: 0.062 Cop_wait_addr: 10.74.198.29:20160
# Cop_backoff_regionMiss_total_times: 144 Cop_backoff_regionMiss_total_time: 0.288     Cop_backoff_regionMiss_max_time: 0.002 Cop_backoff_regionMiss_max_addr: kv_ip:20160 Cop_backoff_regionMiss_avg_time: 0.002 Cop_backoff_regionMiss_p90_time: 0.002
# Cop_backoff_updateLeader_total_times: 1 Cop_backoff_updateLeader_total_time: 0.002 Cop_backoff_updateLeader_max_time: 0.002 Cop_backoff_updateLeader_max_addr: kv_ip:20160 Cop_backoff_updateLeader_avg_time: 0.002 Cop_backoff_updateLeader_p90_time: 0.002
# Mem_max: 2192076
# Prepared: false
# Plan_from_cache: false
# Has_more_results: false
# Succ: true

PD监控

KV 监控:
image

image

image

image

image

KV日志
出现大量Region Error告警信息:
[WARN] [endpoint.rs:527] [error-response] [err="Region error (will back off and retry) message: "peer is not leader for region 8077, leader may Some(id: 8080 store_id: 5)\


TIDB监控


【业务影响】
业务端查询请求大多数阻塞超时。

请大佬们帮忙看看是什么原因导致,有什么解决方案,感谢~

【异常】- region丢失导致tidb集群瘫痪 先参考下这个排查下和上传监控

1 个赞
  1. 请在tikv服务器上查看dmesg,在问题发生时是否有异常
    没有异常

  2. 请grep Welcome tikv.log 看看问题出现时,tikv是否有重启
    tikv没有重启

  3. overview 监控:

  4. tidb 监控:

  5. detail-tikv 监控:

  1. disk-performance 监控:

看你 tidb 的监控,对应时间的 connection 及 QPS。都是升高的啊,导致了你后面的资源使用较高。。。。

建议你优化一下 SQL,我看 慢 SQL 平时也有,而且有个阶段,慢日志还是很多的

嗯,是查询SQL响应慢,导致大量查询阻塞了。。
平时的慢查询日志主要ANALYZE TABLE:

出现问题的时候是大量索引查询慢:
Dashboard慢查询截图:

尤其是这张图,本来索引命中的话只有5000多条数据,看执行计划tablescan 8000多万

客户端执行计划:

想知道是什么原因导致的,因为出现问题时没有突发流量暴增,持续近2小时又恢复了

看监控你的流量有上升的,而且本身有慢日志,上升的 QPS ,感觉导致了资源使用很高,造成了上述的问题(建议你看看tidb- server 监控,再到 tikv-detail 的监控看一下),或者asktug 帖子搜一下 读慢,有相关的帖子

客户端执行走索引的SQL是恢复之后还是问题时段的。统计信息陈旧可能会导致执行计划不准确,可以通过 show stats_healthy查看健康度,通过show analyze status 看下表的分析历史

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。