Spring c3p0连接池无法释放解决方案

【Spring c3p0连接池无法释放解决方案】通过c3p0配置连接池的时候,在进行压力测试的时候,日志出现了这样一个错误:Dataof ,from : “Too many ”
数据库的连接过多 。
然后查看mysql的最大连接数,为100 。

Spring c3p0连接池无法释放解决方案

文章插图
于是便更改最大连接池 。
由于MySQL默认的最大连接数为100,MySQL允许的最大连接数16384 。下由于线程数限制MySQL最大连接数为2048 。
于是更改为2000 。但是数据库连接池最大只有这多,如果建立连接数过多,依旧会超载 。
所以要从根本上解决,那么就要释放连接池 。
参考博客:
解决办法:
将().()更改为().() 。
().() 这种方法从管理的中创建一个,此不是线程绑定的 。当执行完一个实务的时候自动关闭.这种方法不用手动管理实务,但是同一个线程多次的开启和关闭,浪费系统资源和影响执行效率 。而且通过这种方式打开的不会自动关闭,现象时查询多次之后连接池满了,不会再继续查询了 。
().()方法从管理的中创建一个绑定线程的.会根据该线程的执行情况来自动判断是关闭还是延迟关闭 。这样做可以避免手动的管理实务,同时一个线程最多开启和关闭一次又可以提高程序的性能 。
Spring c3p0连接池无法释放解决方案

文章插图
还有一种原因可能是每次查询都会初始化连接数:
。导致查询多次就会造成too many 错误 。因此删除掉,应该在c3p0的文件配置里面配置 。
通过更改方法后,又出现这种错误:Nobound to。
解决办法:
感觉是事务的问题,检查了下配置,的确配置了事务,但是为什么会报这个错呢 。查看事物注解,发现是因为@ 注解未写在正确的地方,成功修改之后便好了 。
参考:。
还有可能的原因是没有在没有在 管理而报的错 。添加这句: