- 浏览: 2261885 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
<property name="unreturnedConnectionTimeout"><value>100</value></property>
<property name="debugUnreturnedConnectionStackTraces"><value>true</value></property>
跟踪 C3p0 连接池连接泄漏
debugUnreturnedConnectionStackTraces、unreturnedConnectionTimeout参数的说明,此篇日志进一步介绍应用这两个参数后的一些经验。
首先,为了跟踪问题,debugUnreturnedConnectionStackTraces参数肯定是设置为true的。下面主要说明 unreturnedConnectionTimeout参数的设置,unreturnedConnectionTimeout参数是在连接被应用程序 checkout后指定时间内未checkin则由连接缓冲池执行kill操作,同时打印堆栈跟踪信息。在我的应用里,maxIdleTime的设置是 120秒,所以,我把unreturnedConnectionTimeout设置成150秒,如果达到最大存活时间后,连接还是不能被连接缓冲池正常关闭,那么肯定出现了连接泄漏,此时,再过30秒后,由连接缓冲池主动执行kill。
通过以上设置后,确实收获了一些成果,通过分析日志,找到了连接泄漏问题代码。异常信息如下:
2011-04-06 15:49:42,599 INFO : com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1395) – Logging the stack trace by which the overdue resource was checked-out.
java.lang.Exception: DEBUG ONLY: Overdue resource check-out stack trace.
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:506)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
at com.leo.dao.XXXDAO.queryXXX(XXXDAO.java:20)
at jsp_servlet._keyareas._country.__taskcdb_add._jspService(__taskcdb_add.java:195)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:416)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:326)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:526)
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:253)
通过堆栈信息,很容易就确认了问题点。这个问题点是由于DAO使用不规范导致的,XXXDAO继承了HibernateDaoSupport,在方法中使用了getHibernateTemplate().getSessionFactory().openSession()获得session,然后通过session.createSQLQuery(),随后却并没有执行session.close()。
关于日志大小:在目前 maxIdleTime=120,maxPoolSize=18,minPoolSize=5,idleConnectionTestPeriod=30 的情况下,日志PatternLayout %d %-5p: %l – %m%n,一天的日志记录情况大约是12M,在硬盘空间允许的情况下建议按天存储日志。
发表评论
-
数据库连接池选型
2014-12-04 18:32 1171关键字:数据库连接池选型 proxool(与spring不太 ... -
Mybatis物理分页插件(目前mybatis下最好的物理分页)
2014-12-03 22:36 45668关键字:Mybatis物理分页插件(目前mybatis下最好的 ... -
atomikos(com.atomikos.icatch.SysException: Error in init(): Log already in use)
2014-10-15 13:12 8528关键字:atomikos(com.atomikos.icatc ... -
mybatis级联查询的两种配置方式(很多人问我,这里给出答案)
2014-08-11 23:39 5070关键字:mybatis级联查询的两种方式 第一种配置方式: ... -
Mybatis 打印SQL(sql)
2014-02-28 13:26 2833关键字:Mybatis 打印SQL(sql) ####### ... -
ibatis泛型dao(spring SqlMapClientTemplate支持)
2011-12-04 21:11 3716关键字:ibatis泛型dao(spring SqlMapC ... -
Hibernate注释大全收藏
2011-06-22 15:00 905关键字:Hibernate注释大全收藏 声明实体Bean ... -
hibernate调用MySql存储过程
2011-06-21 09:38 2596关键字:hibernate调用MySql存储过程 Java ... -
hibernate hql where语句拼接工具类
2011-05-27 01:18 3541附件是:hibernate hql where语句拼接工具类 ... -
Hibernate Mysql注解设置自动增长列
2011-05-08 05:14 10105@Entity @Table(name = "T_P ... -
hibernate二级缓存(包括注解方式)
2011-04-11 20:33 12275二级缓存配置(spring+hibernate) 说明:本人 ... -
Hibernate泛型DAO(结合spring模板支持)
2011-03-31 19:49 982详细介绍 Hibernate 泛 ... -
hibernate注解
2011-03-31 15:35 57附件是hibernate注解相关资料。 -
Eclipse中配置及使用iBATIS插件—ibator
2011-03-17 18:37 3725ibator,大快人心,以下对其配置及使用做个简单介绍. 一 ... -
Hibernate帮助文档及API
2011-03-05 22:16 2101附件是:Hibernate帮助文档及API,欢迎下载学习。 -
如何配置hibernate二级缓存呢?
2011-01-31 17:16 951配置二级缓存网站推荐: http://www.ineeke. ... -
String之HibernateTemplate经典查询
2010-12-08 15:49 1935一、find(String queryString); ... -
Hibernate之Criteria使用经典
2010-12-08 14:32 1003创建一个Criteria 实例 org.hibernate. ... -
SchemaExport工具实战(hibernate)
2010-12-05 15:30 1155SchemaExport工具实战 通常我们使用生成数据库架构 ... -
Hibernate条件查询(DetachedCriteria)
2010-11-21 01:28 1778Hibernate条件查询(DetachedCriteria) ...
相关推荐
- 监控与日志:启用C3P0的日志功能,便于监控连接池的状态和诊断问题。 - 异常处理:在使用C3P0时,需捕获并处理可能出现的异常,确保程序的健壮性。 6. **与其他连接池比较**: - DBCP(Apache Commons DBCP)...
正确配置这些参数对于优化C3P0连接池的性能和稳定性至关重要。例如,如果你的应用程序在高并发下运行,可能需要增加`maxPoolSize`和`acquireIncrement`来应对更多的连接请求。同时,设置合理的`maxIdleTime`和`...
C3p0连接池是Java应用中常用的数据库连接池组件,它通过管理数据库连接,提高应用程序的性能和效率。在处理大量并发请求时,数据库连接池可以有效地避免频繁地创建和销毁数据库连接,从而降低系统资源消耗。这篇博客...
C3P0连接池是Java开发中常用的数据库连接池组件,尤其在Spring框架的应用中扮演着重要的角色。它由Mchange公司开发,提供了一种高效、灵活且稳定的数据库连接管理方式,有效地解决了数据库连接资源的分配与回收问题...
在实际开发中,还可以根据项目的具体需求,通过调整C3P0的各种配置参数,来优化连接池的性能和资源利用率。同时,为了确保系统稳定,还需要关注C3P0的日志信息,及时发现并解决可能出现的连接泄漏、资源耗尽等问题。...
在Java世界里,有两个非常著名的数据库连接池实现:Druid和C3P0。下面我们将深入探讨这两个连接池的技术细节以及它们的特点。 首先,让我们来看看Druid连接池。Druid是由阿里巴巴开发的一款高性能的数据库连接池...
最后,C3P0提供了丰富的监控和日志功能,可以通过MBean或者日志记录来监控连接池的状态,以便进行性能调优和问题排查。例如,可以启用`debugUnreturnedConnectionStackTraces`属性来追踪未归还的连接,帮助找出可能...
c3p0 提供了丰富的配置选项,可以根据不同的应用场景调整连接池的参数。 ##### 连接池基本配置 - `minPoolSize`: 最小连接数。 - `maxPoolSize`: 最大连接数。 - `acquireIncrement`: 每次增加的连接数。 - `...
4. 监控和管理:c3p0提供了一些监控和日志功能,可以跟踪连接的生命周期、检测空闲连接的健康状况、自动测试并关闭无效连接等。 5. 故障恢复:当数据库连接出现问题时,c3p0可以尝试重新建立连接,增加了系统的健壮...
【标题】:“Java Hibernate C3P0”是一个关于Java编程中的持久化框架Hibernate与C3P0连接池的讨论。Hibernate是Java领域广泛使用的对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以使用面向对象的方式来...
2. 连接池参数设置:C3P0提供了丰富的参数来调整连接池的行为,如初始化连接数、最大连接数、最小空闲连接数、测试连接的SQL语句等。这些参数可以根据应用的并发量和数据库服务器的负载进行合理设定。 3. 连接超时...
6. **C3P0与其他连接池比较** - DBCP(Apache Commons DBCP):较老且相对简单,但功能相对较少。 - HikariCP:高性能,设计简洁,但配置相对复杂。 - Druid:阿里开源,功能丰富,支持监控和日志,但可能比C3P0...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序,尤其是使用Hibernate等ORM框架时,C3P0是一个常见的选择,因为它能有效地管理和优化数据库连接,提高应用...
这个压缩包"基于Java的数据库连接池 C3P0.src.zip"包含的是C3P0 0.9.2-pre4版本的源代码,这对于开发者深入理解C3P0的工作原理以及进行定制化开发非常有帮助。 C3P0的主要功能和特性包括: 1. **连接管理**:C3P0...
通过这样的配置,你可以更好地跟踪和调试C3P0连接池的行为。 总的来说,`java c3p0例子`是Java开发中一个重要的数据库连接池实现,它提供了高效、稳定的数据库连接管理,帮助开发者优化应用程序性能。使用C3P0时,...
在Java开发中,数据库连接管理是一项关键任务,而C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0库可以帮助我们高效、稳定地管理数据库连接,避免因数据库连接泄露或...
C3P0 是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用中,整合Mybatis与C3P0可以提高数据库连接的管理和效率。下面我们将深入探讨Mybatis与C3P0整合的相关知识点。 ...
5. **C3P0与其他连接池的比较**:C3P0相对于DBCP和Apache DBCP,提供了更强大的连接池管理功能,例如连接测试策略、空闲连接检测等。然而,对于大型企业级应用,可能更倾向于使用HikariCP或Apache Tomcat JDBC Pool...
**C3P0详解——基于JDBC的数据库连接池** C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要功能是为数据库提供高效的连接管理和自动回收,从而提高应用的性能和...