人大金仓数据库连接异常简单分析查看的方法

发布时间 2023-08-02 20:40:26作者: 济南小老虎

人大金仓数据库连接异常简单分析查看的方法


背景

这边一个测试环境,人大金仓4000的连接池
最近出现多次 连接池用光的问题.
想着简单分析一下. 给研发同事进行问题定位.
这里简单记录一下

问题流程

研发反馈数据库无法连接.
我这边之前部署了一套 kmonitor 直接进行查看. 

发现max-connections 和 active的连接数都已经4000了. 
所以已经无法再创建连接. 

查看罪魁祸首

方法1: 通过linux命令行查看
lsof -i:54321 > 1.txt
cat 1.txt |awk -F '>' '{print $2}' |awk -F ":" '{print $1}' |sort |uniq -c |sort -k1hr
发现最多连接人大金仓的机器信息. 

方法2: 查看系统视图 sys_stat_activity
select count(1),usename  from sys_stat_activity GROUP BY usename ORDER BY 1 DESC ;
这个不仅能够定位到IP地址, 还能够定位到具体的数据库用户, 便于更细粒度的分析问题. 
可以通过query 字段简单看看异常连接正在执行的SQL信息. 

方法3: 查看sys_log的目录信息. 
查看sys_log 下面的当前 日 为后缀的文件. 分析那些数据库执行了哪些SQL
比如我这边的为: 
[root@kingbase sys_log]# pwd
/nvme01/kingbase/data/sys_log
[root@kingbase sys_log]# ll
总用量 89368244
-rw------- 1 kingbase kingbase    10877867  8月  1 23:59 kingbase-01.log
-rw------- 1 kingbase kingbase    41489314  8月  2 19:45 kingbase-02.log
-rwxr-x--- 1 kingbase kingbase   143976851  7月 19 18:29 kingbase-16.log
-rwxr-x--- 1 kingbase kingbase   402925585  7月 19 18:29 kingbase-17.log
-rwxr-x--- 1 kingbase kingbase   366278654  7月 19 18:29 kingbase-18.log

可以查看具体的log 日志进行一些简要分析. 

其他思路

人大金仓可以修改单个用户的最大连接数:
alter user some_user_name  with connection limit 1000 ;

这样可以不影响整个产品的稳定, 只影响一个关键应用.