这边一个测试环境,人大金仓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 ;
这样可以不影响整个产品的稳定, 只影响一个关键应用.