暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TxSQL 连接数满了导致服务异常的排查和解决办法

原创 sg1234 2023-05-11
333

概要描述

本文主要描述 TxSQL 连接数满了导致服务异常的排查和解决办法。

详细说明

问题现象

TxSQL 所有 pod 均为 0/1 时可能会是本文描述的情况。

排查步骤

采用如下方式排查是否为 TxSQL 连接数满了导致:

1、确定 TxSQL pod

任意节点执行:

kubectl get po -owide | grep txsql1

看到的三个结果即为3个 TxSQL pod

file

2、确定 TxSQL Master 节点

根据上一步结果,执行:

kubectl exec -it {上一步任意pod第一列} -- /usr/bin/txsql/tools/txsql.sh list | head -n 1 | awk '{print $3}'

file

得到的结果是 master 的 IP 地址,如上图的 172.22.22.2 ,再根据上一步结果,可以得到 master 的 pod 名,即 txsql-server-txsql1-6bffd78b48-qlfnh

3、查看最大连接数配置

根据上一步结果,执行:

kubectl exec -it {上一步得到的Master pod名} -- cat /usr/bin/txsql/etc/phxsqlproxy.conf | grep Master

file

当前的最大连接数为MasterWorkerThreadMasterIORoutineCnt的乘积,如图就是 5 * 100 ,表示当前最大连接数为500。

4、查看当前 Master 的连接数

根据第2步结果,执行:

kubectl exec -it {第2步得到的Master pod名} -- /usr/bin/txsql/tools/txsql.sh localshell

这样可以进入一个 MySQL shell

然后执行SQL:

show processlist;

file

左下角即为当前连接数,如当前的 501 ,比上一步获取的最大连接数500更大了,因此确定为是 TxSQL 连接数超了导致的问题。

解决方法

如果根据前面的排查步骤确定为是连接数超了的问题,则可以采用以下两种方法解决:

1 找到当前占用较多的连接,结束使用它的进程来释放

如排查步骤4中截图,可以看出是 Inceptor1 的 Metastore 占用了很多连接,此时可以通过重启 Inceptor1 的Metastore角色来释放掉这些连接,恢复 TxSQL。

2 增大 TxSQL 允许的最大连接数

对排查步骤1中的每个 TxSQL pod,均作如此操作:

1、进入 pod

kubectl exec -it {pod名} bash

2、编辑配置文件

vi /usr/bin/txsql/etc/phxsqlproxy.conf

增大MasterWorkerThread的值,比如想提高最大连接数到 1000 ,就修改为10。

每个TxSQL pod都做了以上两步操作后,可以通过重启 TxSQL 来使其生效。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论