引言
在信息运维工作中发现,由于部分应用系统编写的代码不够健壮,对于数据库连接没有及时进行回收处理,造成Weblogic数据库连接池溢出,影响系统的稳定运行。其实Weblogic提供了数据库连接的回收机制,可以将超过配置时间没有活动的数据库连接进行强制回收。
现象描述
应用系统的数据库连接数设置明显比预测的值要高,但还是出现数据库连接数不足的问题。
<BEA-000627> <Reached maximum capacity of pool "JDBC-YCPX", making "0" new resource instances instead of "200".>
- 处理过程
修改JDBC高级配置参数:Configurationà Connection PoolàAdvanced。
此参数的含义为:保留连接处于不活动状态的时间(单位:S),设置的时间过后 WebLogic将强制收回未由应用程序关闭的连接。
请注意,不能使用此功能来代替正常关闭连接。
如果设置为 0,此功能将被禁用。
建议修改参数值为300(5分钟后,如果当前连接仍然处于不活动状态,此连接将会收回)
- 原因分析
应用系统编写的代码不够健壮,对于数据库连接没有及时进行回收处理,造成Weblogic数据库连接池益处,影响系统的稳定运行。
- 经验总结
解决数据库连接数不足的问题,可以增加数据库连接数配置,但通过应用系统登录人数预测,数据库连接数配置可以满足业务需求的情况下,如果还是出现数据库连接数不足的问题,应该确定应用系统的代码存在没有及时回收数据库连接的问题,可以配置通过Weblogic强制回收数据库连接。
Weblogic数据库连接配置注意一下方面:
- 设置连接池容量的初始值等于最大值,减少新建连接的开销。
- 开启WebLogic强制回收连接。Inactive Connection Timeout(一定时间后强制收回连接)参数。
- 当数据库不稳定时,可打开Test Reserved Connections高级参数。