0 0

dbcp一段时间后取不到连接(连接泄漏?)0

由于系统不是自己写的  外加水平差  所以排错困难  特来问问大家怎么解决了  初步觉得dbcp配置不对 或者 关闭连接异常

 

系统是hibernate和jdbc同时连接连接数据库(MySQL)

 

hibernate连接一个主数据源  jdbc(dbcp1.4)去连接附属数据源  

 

一段时间运行后 tomcat报错  附属数据源取不到数据库连接

org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
	at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114)

 

应用服务器上  tcp出现大量的   TCP   应用服务ip        数据库ip:3306         TIME_WAIT       0

 

MySQL状态 Threads_created 343  Threads_connected 88  Threads_running 1 Aborted_clients 1543 Aborted_connects 1 (系统已因为附属数据源掉线而瘫痪的状态)  

 

dbcp配置

 

public static DataSource getDBCPDataSource(String username, String password, String driver, String url,
			String poolSize, String timeout) {

		BasicDataSource ds = new BasicDataSource();

		ds.setUsername(username);
		ds.setPassword(password);
		ds.setDriverClassName(driver);
		ds.setUrl(url);

		ds.setMaxIdle(5);
		ds.setMaxActive(Integer.parseInt(poolSize));
		ds.setMaxWait(Integer.parseInt(timeout));
		ds.setDefaultAutoCommit(true);

		return ds;
	}
2012年6月30日 18:01

5个答案 按时间排序 按投票排序

1 0

检查下代码有没有关闭连接,如果不关闭连接的话,dbcp无法回收连接,造成连接不够,报错。
还有可以开启dbcp的连接自动回收功能来管理废弃的连接
http://commons.apache.org/dbcp/configuration.html

2012年6月30日 19:40
0 0

是不是代码中有耗时操作,这样的话,数据库的连接全都堵塞住了,其他的线程就只能等待当前连接释放了。
jdbc的连接在使用完之后,是不是没有关闭?
建议用jconsole看一下,哪些线程堵塞住了。

2012年7月01日 20:58
0 0

在出现异常的时候,使用jstack查看哪个线程占用了连接

2012年7月01日 15:08
0 0

连接池连接耗尽了吧,应该是没session没释放,每次查询都新启动一个连接

你看一下你查询的代码,或者是hibernate的配置,里面的session没管理好或者session代码没写好。。。

2012年6月30日 19:51
0 0

出现问题的时候看一下数据库的连接情况。MySQL有一个问题,就是当一个链接持续存在超过一定时间后,数据库会单方面关闭这个链接。相关的解决办法网络上面不少,你可以查询参考一下。

2012年6月30日 19:14

相关推荐

    DBCP配置所需jar包(合)

    - **testWhileIdle**:在连接空闲一段时间后是否进行验证,一般配合`timeBetweenEvictionRunsMillis`一起使用。 3. **初始化和使用**: 在Java代码中,你可以通过`BasicDataSource`类来初始化和获取数据库连接。...

    DBCP配置说明

    - 当设置为`true`时,如果一个连接被应用程序使用超过`removeAbandonedTimeout`指定的时间后仍未归还给连接池,则该连接将被视为已废弃,并在下次执行检查时被关闭和移除。 - **示例配置**: ```properties ...

    dbcp配置

    - `testWhileIdle`:在空闲一段时间后是否进行验证。 **4. 配置文件方式** 除了在代码中直接设置属性外,还可以通过XML配置文件进行配置,例如`dbcp.properties`: ```properties driverClassName=...

    模拟的Java连接池

    连接池通过预创建一定数量的数据库连接并保持这些连接的存活状态,可以随时供应用程序使用,用完后并不立即关闭,而是返回到连接池,等待下一次被复用。 在Java中,有多种实现连接池的库,例如Apache的DBCP、C3P0、...

    数据库,连接池,图解原理

    数据库连接池是一种管理数据库连接的机制,它的核心思想是预先创建并维护一定数量的数据库连接,这些连接存储在一个池中,供多个应用程序共享使用,从而避免频繁地创建和关闭连接带来的性能开销。在【标题】"数据库,...

    proxool连接池

    Proxool提供了连接超时机制,可以设置一个时间阈值,如果连接在该时间段内未被使用,系统会自动关闭这个连接,释放资源。这种机制有助于防止连接泄漏,即长时间占用但不再使用的连接占用内存和数据库资源。同时,...

    使用java语言编写的数据库连接池,实现数据库与jsp文件的连接.zip

    为了优化性能,我们需要调整连接池参数,例如最大连接数、最小连接数、超时时间等。过大的连接池可能导致内存浪费,而过小则可能导致并发请求无法及时处理。同时,合理使用连接池的健康检查和自动回收机制可以避免...

    数据库连接(源码)

    数据库连接在IT领域中是一个至关重要的概念,尤其是在开发与数据交互的应用程序时。数据库连接允许应用程序与数据库管理系统(DBMS)进行通信,执行查询、更新数据或者获取存储的信息。源码,作为程序员的工作核心,...

    JNDI数据库连接池

    为了保证系统的稳定性和可扩展性,我们还需要考虑一些最佳实践,比如设置合理的连接池参数(如最大连接数、最小连接数、超时时间等),进行连接池的监控和日志记录,以及定期进行健康检查以防止死锁或资源泄露。...

    c3p0连接池.zip

    - 连接泄漏:确保在完成数据库操作后正确关闭Statement和ResultSet,避免连接无法释放。 - 配置错误:仔细检查配置文件,确保所有必需的参数都有正确的值。 - 性能瓶颈:通过监控和调优,找出可能的性能瓶颈,如...

    【第一讲连接数据库】-代码.rar

    这段代码展示了如何使用Java的JDBC API连接到本地运行的MySQL数据库。 6. 连接池管理: 为了优化性能和资源利用,开发者通常会使用连接池,如Apache Commons DBCP、HikariCP等,它们可以预先创建并管理一定数量的...

    JAVA-Web阶段重点及面试题汇总.pdf

    【Java Web阶段重点及面试题】涉及到的核心概念主要包括JDBC(Java数据库连接)技术、Statement与PreparedStatement的区别以及数据库连接池的原理。 1. JDBC技术 JDBC是Java平台中用于与关系数据库进行交互的一种...

    Java数据库连接(初级)

    为了优化数据库连接的创建和销毁,通常使用连接池(如C3P0、HikariCP、DBCP等),预先创建一定数量的连接,应用程序需要时直接获取,用完归还。 6. **JDBC事务管理**: - 数据库连接默认开启自动提交,可通过`...

    内存溢出及锁表问题的分析与解决.doc

    在一个项目中,使用两个数据库连接,其中专用于发送短信的数据库连接使用 DBCP 连接池管理,用户为不将短信发出,有意将数据库连接用户名改错,使得日志中有许多数据库连接异常的日志,一段时间后,就出现“OutOf...

    mysql-connector-java-5.1.3-rc JDBC 连接驱动

    在实际应用中,为了更好的管理和性能优化,通常会使用数据库连接池,如C3P0、HikariCP或Apache DBCP,它们能更有效地管理数据库连接,减少资源开销。此外,还可以使用ORM(Object-Relational Mapping)框架,如...

    Oracle19c 驱动jar包

    尽管Java 8已经发布了一段时间,但许多企业仍然在使用这个版本,因此ojdbc8.jar确保了这些项目与Oracle 19c数据库的兼容性。 - 这个jar文件同样提供了对Oracle 19c特性的访问,但它是为Java 8的类加载器和兼容性而...

    Tomcat数据源配置

    3. 设置超时机制,避免连接长时间占用不释放。 4. 及时关闭不再使用的数据库连接,防止资源泄露。 5. 配置事务管理策略,以适应不同级别的事务需求。 总结,Tomcat数据源配置是一个涉及多方面因素的过程,包括版本...

    mysql+jsp路径设置

    6. 不忘关闭连接,避免资源泄露。 `myeclipse6.txt`可能涉及的是在MyEclipse中配置项目。MyEclipse是集成开发环境,对于Java Web开发者非常有用: 1. 创建一个新的Dynamic Web Project,设置项目名称和目标运行环境...

Global site tag (gtag.js) - Google Analytics