困扰了近两月的内存泄露问题终于初见眉目了,罪魁祸首:proxool
生产环境的系统近两个月一直不稳定,过两天内存就会占满,通过jprofiler,jrmc各中方法调试,总是找不到任何原因。
昨天,在做另外一项测试中,终于发现了一个最可能的存在的内存泄露的地方,proxool数据库连接池内存泄露。
测试环境:
tomcat6.0
mysql5.0
昨天分别到官方网站下载dbcp,proxool,c3po最新版本。全部配置tomcat下成jndi数据源,连接数都配置成最大300,最小30
jrokit R27.5
testInsertDB.jsp直接通过数据源连接数据库,通过一个事务往数据库每次插入200万条数据库。
<%
Connection conn = CourseDBService.getConnection();
Statement stmt = conn.createStatement();
String sb=new String("insert into t_sys_log values('id");
conn.setAutoCommit(false);
for(int i=5000000;i<7000000;i++){
StringBuilder sb1=new StringBuilder(sb);
sb1.append(i).append("','userId").append(i).append("','userName").append(i).append("',null,'测试课程").append(i).append("',null)");
//System.out.println("-----------------sb="+sb1);
stmt.executeUpdate(sb1.toString());
}
conn.commit();
stmt.close();
conn.close();
%>
tomcat 6启动后占用168M内存,
开始用proxool从100万-300万插入200万数据,tomcat6 占用内存从168M一直涨到1G,在插入完毕后,通过jrmc手动垃圾回收后,通过jrmc观察,时间堆的占用量还在600M左右,怎么也回收不了。
用dbcp从300万-500万插入200万数据,tomcat6 占用内存从168M稍微涨了一点,但是内存变化不大。
用c3p0从500万-700万插入200万数据,tomcat6 占用内存基本没有什么变化。
具体插入的时间我没有太多统计。粗略感觉,好像时间差不多
今天凌晨,服务器上2个tomcat中一个连接池切换成dbcp,到现在内存回收正常,一直很稳定,通过jrmc看内存占用一直稳定在40%左右,在到60%时会回收到40%,最低能回收到30%。
而另外一个依旧用proxool连接池的tomcat,内存占用率从40%一会就升到100%,然后突然回收到40%,然后一会有迅速的达到100%,然后又回收..........,最低只能回收到40%
在线监控中.......
不知道proxool是不是确实有内存泄露...........
-
分享到:
相关推荐
包含proxool-0.9.1.jar与proxool-cglib.jar,欢迎下载
spring配置proxool连接db2用到的proxool相关jar包:proxool-cglib.jar;proxool-0.9.1.jar ;proxool-listenerCfg.jar。
由于项目需求的需要,我们引入了连接池。...我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们的项目中采用了Proxool
1.解决不能Unregister jdbc driver的内存泄露问题。 十二月 02, 2013 8:19:43 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [/xxx] registered the JDBC ...
jar包,版本:proxool-0.9.1
Java connection pool : Proxool api(chm)
压缩包中包含两个jar包: proxool-0.9.1.jar proxool-cglib.jar mysql在启动后,如果一段时间内没有活动,那么将自动关闭该连接。这段时间,默认为8小时。在spring+hibernate中解决该问题, 可使用proxool这个连接池...
proxool数据库连接池
其中包括: proxool-0.9.0RC3.jar,mysql-connector-java-5.1.6-bin.jar
spring+proxool配置spring+proxool配置spring+proxool配置
proxool配置参数说明。 spring结合proxool的datasource配置方法 及proxool-0.9.1.jar proxool-cglib.jar
proxool-0.9.1.jar proxool-cglib.jar
spring proxool配置资料 spring proxool配置资料spring proxool配置资料
proxool api proxool api proxool api proxool api
proxool.jar包,proxool连接池用到的两个jar包
有oracle连接池proxool 用到的jar 包 还有jdbc的驱动包 proxool的源码包 Java实现oracle proxool 单态的例子等
解决找不到org.hibernate.proxool.internal.ProxoolConnectionProvider的问题
proxool-0.9.1.jar proxool_cglib-0.9.1.jar 用于连接池的配置
the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is ignored. --> - - <proxool> - <!-- 连接池的别名 --> <alias>DBPool</alias> - <!...
proxool-0.9.1(my).jar 包是我修改了proxool-0.9.1后的jar包,修改后可以完全支持spring配置,并添加了charSet配置属性,用于配置数据库链接的设置默认字符集,并且解决了proxool数据库连接池报如下错误的问题:...