DB连接池连不上,连接池耗尽

最近段时间。今年开始把。我维护的网站一直报错数据库连接不上,找不到链接,连接池耗尽问题。 
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted 
2017-07-26 15:42:20,516 ERROR [STDERR] at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:103) 
2017-07-26 15:42:20,516 ERROR [STDERR] at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540) 
2017-07-26 15:42:20,516 ERROR [STDERR] at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) 
2017-07-26 15:42:20,516 ERROR [STDERR] at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) 
2017-07-26 15:42:20,516 ERROR [STDERR] at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) 
2017-07-26 15:42:20,516 ERROR [STDERR] at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.loader.Loader.doQuery(Loader.java:673) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.loader.Loader.loadEntity(Loader.java:1860) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3044) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:395) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195) 
2017-07-26 15:42:20,531 ERROR [STDERR] at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103) 
2017-07-26 15:42:20,547 ERROR [STDERR] at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878) 
2017-07-26 15:42:20,547 ERROR [STDERR] at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815) 
2017-07-26 15:42:20,547 ERROR [STDERR] at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808) 
2017-07-26 15:42:20,547 ERROR [STDERR] at org.springframework.orm.hibernate3.HibernateTemplate$1.doInHibernate(HibernateTemplate.java:477) 
2017-07-26 15:42:20,547 ERROR [STDERR] at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373) 
2017-07-26 15:42:20,547 ERROR [STDERR] ... 68 more 
2017-07-26 15:42:20,547 ERROR [STDERR] Caused by: java.util.NoSuchElementException: Timeout waiting for idle object 
2017-07-26 15:42:20,547 ERROR [STDERR] at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:756) 
大概日志如上所示,很是郁闷,叫来了测试。想让测试找出根源。结果测试只能重现错误。。我瞬间感觉失去信心了。 
后面好好看看日志,看看报错方法,发现dao里获取connection竟然是this.getSession。后面百度了下这个方法。是hibernate自带的,但不会释放。对比了几个获取方式,我小心翼翼的替换了几个类。害怕不是根源。。 
后面让测试再次测试了后。发现没有报错连接池耗尽之类的问题。。 
暂时这么处理了。后续在继续观察中。大家有更好的见解可以提出。

原文地址:https://www.cnblogs.com/wuyachal/p/9037323.html

时间: 2024-10-31 02:22:10

DB连接池连不上,连接池耗尽的相关文章

连接池技术解密,连接池对我们不再陌生

一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解决方案:数据库连接池(Connection Pool).系统初始运行时,主动建立足够的连接,组成一个池.每次应用应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接,使用完后,不再关闭,而是归还. 二.连接池主要由三部分组成:连接池的建立.连接池中连接的使用管理.连接池的关闭. 三.

(转)WebSphere 中池资源调优 - 线程池、连接池和 ORB

WebSphere 中池资源调优 - 线程池.连接池和 ORB 来自:https://www.ibm.com/developerworks/cn/websphere/library/techarticles/1106_zhuxl_websphereenhancement/1106_zhuxl_websphereenhancement.html IBM WebSphere Application Server (以下简称 WAS)能支持的应用程序越来越多,而这些应用程序有各自的独特特性.需求和服务

javaWeb_JDBC_数据库连接池概述以及dbcp连接池

JDBC_dbcp数据库连接池 1.数据库连接池概述 (1).传统的数据库操作 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码( 得花费0.05s-1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接.这样的方式将会消耗大量的资源和时间. 数据库的连接资源并没有得到很好的重复利用.若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的 甚

解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问题。

解决Mysql连接池被关闭  ,hibernate尝试连接不能连接的问题. (默认MySQL连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池. 所以系统发布第二天访问会失去链接,导致访问失败.因此稳定解决办法是把hibernate默认的连接池换成c3p0链接池. 在Hibernate(spring管理)中的配置:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledData

开源连接池_dbcp_c3p0_tomcat内置连接池

5.开源连接池_DBCP_C3P0 开源数据源: DBCP: 导包:commons-dbcp-1.4.jar    commons-pool-1.5.6.jar 方式1: BasicDataSource source = new BasicDataSource(); source.setDriverClassName("com.mysql.jdbc.Driver"); source.setUrl("jdbc:mysql:///day11"); source.setU

Linux线程池在服务器上简单应用

一.问题描述 现在以C/S架构为例,客户端向服务器端发送要查找的数字,服务器端启动线程中的线程进行相应的查询,将查询结果显示出来. 二.实现方案 1. 整个工程以client.server.lib组织,如下图所示: 2. 进入lib, socket.h.socket.c /** @file socket.h @brief Socket API header file TCP socket utility functions, it provides simple functions that h

openoffice在连接时有错误,无法连接上

openoffice在连接时有错误,无法连接上 报如下错误: java.net.ConnectException: connection failed: socket,host=localhost,port=8100,tcpNoDelay=1: java.net.ConnectException: Connection refused: connect at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOffic

ssh连接github连不上

连接github报端口22连接不上: 输入命令展示出ssh_config内容后: vim /etc/ssh/ssh_config 修改Port:443 输入命令:ssh -T -p 443 [email protected]查看是否链接成功 然后加上: Host github.com Hostname ssh.github.com Port 443 输入命令:ssh -T [email protected]查看是否链接成功 借鉴文章链接:http://www.inanzzz.com/index.

iis 应用程序连接池 在计算机“.”上没有找到WAS服务

重新打开控制面板----打开或关闭windows功能,全部勾选internet information services 可承载的web核心.internet信息服务.microsoft.net framework3.5.1三个选项的所有子项,点确定 即可 iis 应用程序连接池 在计算机"."上没有找到WAS服务,布布扣,bubuko.com

navicat远程连接阿里云ECS上的MYSQL报Lost connection to MySQL server at &#39;reading initial communication packet&#39;

问题现象 MySQL 远程连接报错:Lost connection to MySQL server at 'reading initial communication packet' 解决方案 1.检查是否有防火墙限制2.检查 MySQL 是否有访问权限 use mysql; Grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option; flush privileges; 3.检查 my.ini 文