1、项目环境

项目是典型的轻量级JavaEE项目,使用SSH框架构建,数据源使用DBCP管理,和Spring进行了整合。

项目数据库使用Oracle数据库。

项目DBCP配置内容如下

###### DBCP连接池参数配置 ###### ######
#jdbc连接池初始连接数,设置后更好发挥连接池左右
jdbc.initialSize=10
#jdbc最大活动连接数,即连接池上限,要小于数据库连接上限,项目组根据系统最大用户上限数和访问量来调整
jdbc.maxActive=20
#jdbc最大空闲连接数 ,建议与初始连接数相同
jdbc.maxIdle=10
#jdbc最大等待连接数,必须小于sql或存储过程最长执行时间,-1表示无限制
jdbc.maxWait=-1
###### DBCP连接池高级参数配置 ###### ######
#是否让连接池自动回收泄露的连接
jdbc.removeAbandoned=true
#jdbc连接保持超过2小时(3600秒),并且剩余连接很少时自动回收泄露的连接
#规则:剩余空闲连接<2,当前活动连接数仅比最大连接上限小3
jdbc.removeAbandonedTimeout=5
#数据库连接断开或重启后连接池用该语句测试来恢复连接
jdbc.validationQuery=select 1 from dual

项目异常时会抛出如下异常

DBCP object created 2013-08-23 13:59:41 by the following code was never closed:
java.lang.Exception
at org.apache.commons.dbcp.AbandonedTrace.setStackTrace(AbandonedTrace.java:157)
at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:76)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at net.bull.javamelody.JdbcWrapper$3.invoke(JdbcWrapper.java:742)
at net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:271)
at $Proxy0.getConnection(Unknown Source)

2、对DBCP的配置如下:
#jdbc最大空闲连接数为0,每次应用获取连接时,直接向数据库获取连接,连接池不缓冲连接

jdbc.maxIdle=0

#是否让连接池自动回收泄露的连接,有连接泄漏也不回收
jdbc.removeAbandoned=false
3、用PLSQL登陆到应用连接的目标库
使用如下SQL语句查看当前用户名下指定主机连接Oracle的情况
select * from v$session where username='OPRISK' and machine='PC'

查询的目的在于找到指定主机,以指定用户名连接数据库的状况。

如果查询时报错,看看报错信息,可能是没有权限,grant select on v_$session to <username>;

OPRISK    用户名(填写项目连接数据库时使用的用户名)
PC        主机名(填写项目所在主机的主机名)
PLSQL设置自动每秒刷新查询结果
4、点击应用发送请求,
如果发现发送某个请求后,PLSQL查到改连接而且连接一直存在,不关闭,说明,改请求导致了连接泄露。

个人观点,期待探讨!

最新文章

  1. 第16周界面设计PSP总结
  2. SQL Server表分区的NULL值问题
  3. 大数据挖掘: FPGrowth初识--进行商品关联规则挖掘
  4. 怎么学习AOPR使用方法
  5. apscheduler 绿色版
  6. 支付SDK的安全问题——隐式意图可导致钓鱼攻击
  7. nbIoT基础概念
  8. Sqlstate解释
  9. Android-Wheel-Menu
  10. Dapper使用技巧分享
  11. React16的interactiveUpdates
  12. UVALive - 7041 The Problem to Slow Down You (回文树)
  13. JVM思考-init和clinit区别
  14. CRM 数据查重
  15. Java虚拟机的组成
  16. OS基础:动态链接库(一)
  17. DataContract和DataMember的作用
  18. 基于nopCommerce的开发框架(附源码)
  19. anti-VM tech
  20. ElasticSearch(五):简单的ElasticSearch搜索功能

热门文章

  1. logstash 发送zabbix 给消息加上type
  2. android 通过TimePickerDialog修改时间
  3. 用c++编写一个不能被继承的类(但是可以在类外部定义该类的对象)
  4. Shiro学习详解
  5. pyqt小例子 音乐盒
  6. AngularJS移动开发中的坑汇总
  7. C++11 lambda 表达式
  8. XML基本知识
  9. Javascript高级程序设计读书笔记(第六章)
  10. (转)第一天 XHTML CSS基础知识 文章出处:标准之路(http://www.aa25.cn/div_css/902.shtml)