并发,数据库连接池不够用

csl127087 2016-05-25 11:11:51
一个web应用服务器器连一个MySQL数据库。web容器的数据库连接池配置100,MySQL服务器的最大连接数配置1000。在实际压测的时候(使用LoadRunner),当虚拟用户数达到110多,就开始出现“无法获取数据库连接”的报错。我们统计了部分机器,它连接数据库确实超过100了。也就是说,几乎每个请求都会获取一个数据库连接,这应该是违背了数据库连接池,池化的本意。
请问你们在实际使用过程中,如果碰到这种数据库连接池恶性创建连接的现象,都会怎么处理?或者会从哪些方面去分析解决这样的,或者类似的问题?
...全文
5399 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
luochaofan1020 2017-11-21
  • 打赏
  • 举报
回复
rmini 2016-06-12
  • 打赏
  • 举报
回复
来了论坛才发现自己知道的东西太少了
csl127087 2016-06-04
  • 打赏
  • 举报
回复
有的释放,也可能没有释放
gw6328 2016-06-02
  • 打赏
  • 举报
回复
连接后释放没有?
csl127087 2016-06-01
  • 打赏
  • 举报
回复
请问有没有一个合理的解决方案,比如说一次性搬移少量的数据。
Tiger_Zhao 2016-05-31
  • 打赏
  • 举报
回复
迁数据的时候长时间保持连接咯。
你的数据不可能秒迁吧。
这时候就要禁止高并发,还是设计的问题。
csl127087 2016-05-30
  • 打赏
  • 举报
回复
引用 13 楼 Tiger_Zhao的回复:
[Quote=引用 6 楼 csl127087 的回复:]这个应该不是被攻击了[/Quote]
但是你做的测试就是在模拟恶意连接啊!
这是你测试程序的设计有问题,和数据库有什么关系?
不是做测试,实际应用出现的情况,是在做数据搬移的时候
Tiger_Zhao 2016-05-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csl127087 的回复:]这个应该不是被攻击了[/Quote]
但是你做的测试就是在模拟恶意连接啊!
这是你测试程序的设计有问题,和数据库有什么关系?
csl127087 2016-05-30
  • 打赏
  • 举报
回复
引用 12 楼 xiaoxiangqing的回复:
连接完后要马上释放
这个事是连接池自己处理
csl127087 2016-05-30
  • 打赏
  • 举报
回复
引用 9 楼 专注or全面的回复:
楼主都说了,是Mysql数据啊 这个跟你连接池没关系吧,可能是其他原因 即便是开启了连接池,连接池中缓存了数据库连接,在没有可能连接的情况下,缓存在连接池中的连接也会被释放掉供新的连接使用 估计是你测试哪里出了问题,mysql也不大可能有这么弱的设计,一部分连接保持在连接池,另外一部分连接缺无法成功建立起来
其实我还是不太明白,到底是连接不够用,还是连接无法及时释放出来,导致无法获取,这种情况是出现在数据搬移的时候。耗内存大吗???
xiaoxiangqing 2016-05-30
  • 打赏
  • 举报
回复
连接完后要马上释放
newnazi 2016-05-30
  • 打赏
  • 举报
回复
恶性连接 ?这个楼主怎么理解的 ? 用防火墙过滤 或者 域控 AD+DC
专注or全面 2016-05-29
  • 打赏
  • 举报
回复
楼主都说了,是Mysql数据啊 这个跟你连接池没关系吧,可能是其他原因 即便是开启了连接池,连接池中缓存了数据库连接,在没有可能连接的情况下,缓存在连接池中的连接也会被释放掉供新的连接使用 估计是你测试哪里出了问题,mysql也不大可能有这么弱的设计,一部分连接保持在连接池,另外一部分连接缺无法成功建立起来
csl127087 2016-05-28
  • 打赏
  • 举报
回复
引用 7 楼 卖水果的net的回复:
sp_who 一下,看看是不是你的应用连接过来。
这个怎么用!!!!!!
卖水果的net 2016-05-28
  • 打赏
  • 举报
回复
sp_who 一下,看看是不是你的应用连接过来。
csl127087 2016-05-28
  • 打赏
  • 举报
回复
引用 4 楼 Tiger_Zhao的回复:
负载超过设计出故障是应该的。
如果你觉得这个负载是正常的,说明设计小了。
如果这是恶意负载,停止服务(出错)不是很正常的反应?哪个服务器受到直接攻击还能正常的?
这个应该不是被攻击了
csl127087 2016-05-28
  • 打赏
  • 举报
回复
引用 1 楼 中国风的回复:
有没有启用连接池 在连接字符串加上 Pooling=True;....
用了连接池,初始化100个连接,就是数据库表数据太多,搬移数据的时候经常出现这样的问题
kingtiy 2016-05-25
  • 打赏
  • 举报
回复
你测试并发,就是为了占用连接. 就算你启动连接池,但连接都在使用. 连接池也没有效果的. 连接池是用完后放入池子.现在是还在用.
中国风 2016-05-25
  • 打赏
  • 举报
回复
有没有启用连接池 在连接字符串加上 Pooling=True;....
Tiger_Zhao 2016-05-25
  • 打赏
  • 举报
回复
负载超过设计出故障是应该的。
如果你觉得这个负载是正常的,说明设计小了。
如果这是恶意负载,停止服务(出错)不是很正常的反应?哪个服务器受到直接攻击还能正常的?
在基于JDBC的数据库实际应用开发中,对数据库连接的管理是一个重点也是一个难点,频繁对数据库的连接与关闭操作、多客户对数据库的并发访问,一定程度上决定了WEB系统的响应以及应用性能。使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在数据库连接池方面的使用现状后,总结了一些数据库连接池开发程序中容易忽略的问题。并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和容易,从实际上论证了这种设计方案的可行性。 关键词:连接池;数据库;JDBC;并发访问在基于JDBC的数据库实际应用开发中,对数据库连接的管理是一个重点也是一个难点,频繁对数据库的连接与关闭操作、多客户对数据库的并发访问,一定程度上决定了WEB系统的响应以及应用性能。使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧