show processlist的进程号杀不掉,且sleep时间超过time_out的限制时间,为什么不断开

【 TiDB 使用环境】生产环境 or 测试环境 or POC
【 TiDB 版本】
【遇到的问题】
【复现路径】做过哪些操作出现的问题
【问题现象及影响】

【附件】

1 个赞

什么版本?怎么kill的?

1 个赞

请提供tidb版本
最好把

show processlist#命令你想kill哪个进程?
1 个赞

sleep时间超过time_out的限制时间不断开,可能是因为这个连接复用过,并不是真的空闲了这么多时间。发下tidb版本和kill的命令吧,还有是直连tidb 还是通过负载均衡kill的呢。

1 个赞

是就仅仅这kill不掉。还是当前所有都kill不掉?

1 个赞

你好。

  1. TiDB KILL 语句默认与 MySQL 不兼容,所以不能直接使用 MySQL 的 KILL 语句。正确的语句是 KILL TIDB <Id>。具体可以参考:https://docs.pingcap.com/zh/tidb/stable/sql-statement-kill#kill-tidb

请注意,TiDB 在 v5.x 的版本中(应该是最初的版本,具体我记不清了),我记得有出现过杀不掉的 BUG,所以即使你使用了正确的语句,也需要看下当前版本是否有此 BUG。
TiDB执行kill mysql查询id的指令,无法kill掉 这个帖子,也许对你有帮助。

  1. sleep 的具体场景可以描述下吗?还是指,连接上 TiDB 一直不执行任何操作,等待超时断开?
3 个赞

建议提供更详细环境说经,和相关参数配置。

1 个赞

kill tidb id是不能跨tidb节点去kill的,就是说,如果有三个tidb节点,sql执行在tidb-3上,你通过tidb-2连接到集群中,此时是不能在tidb-2中kill掉tidb-3中执行的sql

1 个赞

版本:Server version: 5.7.25-TiDB-v4.0.12 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

问题描述:通过kill tidb [query|connection] ID都kill不掉,系统设置的超时时间是8小时,但是同一个服务的用户杀不掉,自己测试了一个sleep进程是可以kill掉的:

2 个赞

是直连的,我在怀疑是不是我的连接服务有问题,准备重启下我的服务看看。

重启后,正常了吗?

引用下其他帖子,有可能是这个问题

可能是个bug

正常了

您好,

  1. 请问是直连还是经过 HA ?
    直连需要打开 compatible-kill-query = true,走 HA 需要关闭。
    参考 MySQL 兼容性

  2. tidb-server 虽然有 wait-timeout 配置,但是没有功能,即超时了也不会关闭连接。