注册
数据库最大会话数没超限,应用报错无法获取连接问题处理记录

数据库最大会话数没超限,应用报错无法获取连接问题处理记录

csw 2023/11/30 1734 3 0
摘要 -数据库会话没达到限制,应用报错无法打开连接?

1.问题描述

近日,收到某项目反馈,应用报错,连接不上数据库。如下图所示:
image.png

2.问题分析

从图上看到报错不能新建连接,也不是数据库驱动抛出的错误。
(1)为保险起见,登录数据库查询数据库的最大会话数,和设置的最大会话数,看是否有超过。

select * from v$dm_ini where para_name like 'MAX_SESSIONS'; --结果是1500
select count(*) from v$sessions; --结果是482

从查询出的结果来看,数据库的会话数没有超过限制,所以排除这个原因。
(2)既然数据库连接数没超,那么就需要排查应用设置的连接池多大,是否有超过。询问应用人员,得知连接池里面设置的最大连接数是300。
(3)进一步确认每台应用服务器的连接数在数据库里面是否达到限制。这里通过客户端的主机名或主机ip来分组查询。

select clnt_host,count(*) from v$sessions group by clnt_name order by 1 desc;

查询结果如下图所示:
image.png

从图上可以看到有个应用已经达到连接池设置的300限制值了。

3.问题解决

至此故障原因已经找到,应用不能连接数据库,是因为某个应用的连接数达到连接池限制值导致,需要释放连接后才能获取到连接,才能登录数据库。这里需要交给应用人员进一步分析为何没有释放连接。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服