最近段时间。今年开始把。我维护的网站一直报错数据库连接不上,找不到链接,连接池耗尽问题。
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
最近段时间。今年开始把。我维护的网站一直报错数据库连接不上,找不到链接,连接池耗尽问题。Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted2017-07-26 15:42:20,516 ERROR [STDERR] at org.apache.commons...
下面是源代码:
**public class J
db
cUtils {
private static BasicDataSource dataSource = new BasicDataSource();
private static Connection con= null;
static {
// 通过对象给
池
子提供参数
dataSource...
已解决org.apache.tomcat.
db
cp.
db
cp.SQLNestedException: Cannot create PoolableConnectionFactory
propertyCycle -> 0, testConnectionOnCheckin -> true, testConnectionOnCheckout -> false,
unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
昨天,项目从test启动测试,报上...
测试同事突然说项目连不上了,看了下
连接
池
文件,没有什么问题,网上查询后才知道,是大多数记事本工具(Emedit等)默认是以utf-8 BOM方式,会在文件中加入BOM头,导致以下错误:
Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1;
前言中不允许有内容。
解决方法,用NotePad打开文件,以UTF-...
@PostMapping("txt")
@Transactional(rollbackFor = Exception.class)
@ApiOperation(value = "解析接口")
@ApiImplicitParams({
@ApiI
近几天在做一个项目时,遇到一个问题:前端如果在短时间内(2秒内)有多个相同的请求发到后台,后台再去通过restTemplate发送请求给其他服务的时候,会报错“connetion pool shutdown”。
通过查阅资料,大概是因为由于rest
连接
过于频繁,导致上一个获取不到
连接
。具体原因需要进一步分析。
stackoverflow:
1:https://stackoverflow.co...
在Python中
连接
Redis时,如果频繁地创建和断开Redis
连接
,会影响性能。此时可以使用
连接
池
来提高性能。Redis
连接
池
可以在应用程序启动时预先创建一定数量的
连接
,然后在需要时从
池
中获取
连接
,使用完毕后将
连接
归还到
池
中,而不是每次都重新创建
连接
。
要使用Redis
连接
池
,可以使用`redis.ConnectionPool`类来创建
连接
池
。以下是一个示例:
```python
import redis
# 创建
连接
池
pool = redis.ConnectionPool(host='localhost', port=6379,
db
=0)
# 获取
连接
r = redis.Redis(connection_pool=pool)
# 设置键值对
r.set('key', 'value')
# 获取键值对
value = r.get('key')
print(value)
# 归还
连接
到
连接
池
pool.release(r)
在上面的例子中,我们首先创建了一个
连接
池
,然后使用
连接
池
创建了一个Redis
连接
。接下来可以像之前一样使用Redis
连接
进行操作,最后需要将
连接
归还到
连接
池
中,以便于下次使用。