经常查询卡死,如何设置sql 自动超时停止查询

【TDengine 使用环境】
生产环境

【TDengine 版本】3.3.6.9

【操作系统以及版本】centos

【部署方式】非容器部署

【集群节点数】3

【集群副本数】3

【描述业务影响】业务发现无法查询到数据时,检查td发现查询sql 执行不了

【问题复现路径/shan】做过哪些操作出现的问题

【遇到的问题:问题现象及影响】我想知道后台如何设置查询到了一定时间自动kill这个sql ,如何设置

【资源配置】

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

目前,TDengine 没有提供直接通过后台参数配置,就能对所有查询设置一个统一的超时时间,然后到期自动结束的功能。

目前最有效的自动化方案是定期执行脚本,结合 SHOW QUERIESKILL QUERY 命令,实现自动监测与结束。

这个自动化方案的核心是使用 SHOW QUERIES 命令来获取所有正在执行的查询及其耗时。例如:

sql

SHOW QUERIES;

这条命令会返回一个表格,其中包括查询ID(kill_id )、执行时长、SQL语句等关键信息。

然后,创建一个定时任务(如cron job),让它周期性地执行这个脚本(例如,每30秒运行一次)。脚本的逻辑是:

  1. 连接到TDengine并执行SHOW QUERIES
  2. 解析执行时长,筛选出超过设定阈值(例如,300秒)的查询。
  3. 对这些查询,构造并执行KILL QUERY 'kill_id'; 命令,将其终止。

这样,你就可以基于查询的实际执行时长进行精准的自动化管理。

昨天我遇到这种情况,执行kill, 查询依然是卡死的,我重启节点后 ,才恢复查询正常;我问ai说tdengine是标记kill 实际并没有真实杀死;不知是否正确,以前我用sql 查询超级表总数据时,超过900s 就会自动返回 kill 查询,所以我才问是否有这种设置

这种不要轻易的相信AI,因为AI会出现很多的幻想。看似很有道理,其实是它自己臆想出来的。
你一个查询超过900s,是不是考虑一下优化这个sql语句。如果可以,可以把这个查询语句的在控制台的执行,贴图出来,或者加上一个EXPLAIN SQL 分析一下执行这个语句的瓶颈到底在哪里?

kill 一个查询时,多执行几次 kill 。

哪个是领导想看 目前存的数据总量,实际业务时不需要这个的,我执行的是查询某一个超级表从开始到现在的总数据量

如果kill 后在,show queries 已经查不到这个,还可以继续kill吗

客户端当然可以继续 kill, 但会返回错误。