spring 多线程 数据库连接被耗尽

7哥 发布于 2018/05/30 11:39
阅读 1K+
收藏 1

我一个job,里面有多个线程池,也就是多线程。

配置的数据库连接池最大30个。

现在起来job后,数据库连接数增加的数明显大约30这个值。

这是什么原因呢?

求大神指点

加载中
0
御风林海
御风林海
数据库连接池释放和回收资源需要时间,还没来得及回收,又被线程抢去
7哥
7哥
这样不就是线程池的优点吗?没有回答问题啊
0
蓝水晶飞机
蓝水晶飞机

最大连接数太低了,建议设置100

建议控制现场的并发数,用线程池提交异步任务。

问题从解决并发开始。

蓝水晶飞机
蓝水晶飞机
回复 @7哥 : 你不去控制并发的线程数量,如果30个connection 都是used,那么连接池就没有可申请的connection啦。
7哥
7哥
也没有回答问题啊。为什么连接数量,超出了设置的最大连接数?
0
姜小北
姜小北

应该有空闲连接的配置吧

7哥
7哥
空闲+活跃<=max
0
独孤晓林

增加连接数

0
JPer
JPer

连接数不够呗,考虑下应用是否承载了很大的请求,sql效率或者有阻塞的地方导致线程不能及时释放;你这个就是一对多的关系,连接池肯定的放大;这个不能太大了,考虑下分布式或集群;

7哥
7哥
释放不释放没问题,为什么连接数总数超过了设置的最大连接数?
0
Lohanry
Lohanry

spring连接池中的连接个数不等于数据库链接个数。

7哥
7哥
知道
0
李胜飞
李胜飞

哈哈,焦急。

问题我是听明白了,但是不清楚原因。

有没有其他数据库连接池或着其他地方使用数据库连接的地方?分析到原因的话讲一下,学习学习。

7哥
7哥
怀疑是连接泄露
0
姜小北
姜小北

引用来自“姜小北”的评论

应该有空闲连接的配置吧

测了测,,是您说的那样,不过我用的druid连接池,用多线程测试查询,一直没超过我定义maxActive=20的数量,使用druid自带的管理工具http://127.0.0.1:8080/web/druid/datasource.html
池中连接数峰值20,mysql 使用语句show processlist 也没超过20

7哥
7哥
对。
返回顶部
顶部