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

  故障排查指南
内容纲要

概要描述

本文主要描述 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 来使其生效。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。