OB 里怎么快速杀掉卡住的慢会话、卡死的 SQL?

【 使用环境 】测试环境
【 OB 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

6 个赞

在这种情况下,您可能遇到了慢查询或者长时间未响应的 SQL 会话,这可能是由于长时间运行的事务、锁冲突或者其他资源争用所导致。首先,我们可以使用 obdiag 工具来帮助诊断问题。具体步骤如下:

日志采集场景: SQL性能问题
日志采集命令: obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”

这里,我们需要知道数据库连接信息(如主机地址、端口、用户名、密码及数据库名)和一个与问题相关的追踪ID(trace_id)。这个追踪ID通常可以通过查看当前活动会话获得,或者根据业务日志中的信息得到。

此外,如果您已经怀疑是某个特定的SQL导致的问题,可以尝试直接定位该SQL的执行情况。

为了更准确地定位问题,希望您能够提供以下信息:

  1. 当前OceanBase集群的版本信息。
  2. 是否能够提供与问题相关的SQL语句及其执行计划?
  3. 问题发生时,是否有大量的并发请求或操作?
  4. 您是否尝试过手动终止这些慢会话或SQL?如果有,结果如何?
  5. 能否提供最近一段时间内的系统负载情况(例如CPU、内存、I/O等)?

有了以上信息,我们可以更好地帮助您解决这个问题。同时,请按照上述提供的命令收集日志,并将日志文件发送给我们进一步分析。

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

你这是刷积分是吧?如果在这样发的 会给你禁言

先查活跃会话 ,然后拿到 sess_id之后, KILL SESSION 直接杀掉,很快的 10 秒解决卡死问题

2 个赞

学到啦

2 个赞