slb -> tidb 客户端断掉,连接无法释放

slb -> tidb 客户端异常断掉,连接无法释放。

导致达到连接数上限。

select * from INFORMATION_SCHEMA.CLUSTER_PROCESSLIST;

  1. 请问您应用的连接使用的是短连接还是长连接?
  2. 反馈下 show variables like ‘%timeout%’; 结果
  3. 问题发生到连接数满中间有多长时间?

再帮忙确认下问题:

  • 断掉和无法释放分别是指哪里到哪里的连接?可以帮给个断开的异常日志和无法释放的现象截图吗?
  • 连接数达到上限是操作系统?还是 tidb 或 lb 的限制? 有报错信息方便给下吗?
  • 另外可以帮给下出现这个现象时的 sudo netstat -lanp | grep [tidb-pid] 和问题 tidb 上的 show full processlist 结果

谢谢

这个问题已经非常明确,客户端异常退出,服务端连接进入sleep。mysql使用就不存在这个问题。

select count(1) from INFORMATION_SCHEMA.CLUSTER_PROCESSLIST where COMMAND<>‘Sleep’;

使用连接池维持长连接。
服务端设置sleep 超过5分钟连接被移出。

ddl操作即便客户端关闭连接,tidb后端任务不会被终止,会继续排队执行。是否这里边有什么机制,导致这种现象的产生。

  1. kill 会话,并不会中止 DDL ,会在后台进行。可以使用 admin cancel 取消 ddl 操作
  2. 会话异常ddl继续操作感觉不是更符合要求呢? 另外会话会有很多ddl操作吗?