当前位置: 首页 > news >正文

数据库连接池问题 Max Pool Size

超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

这是个老问题了!你就查两点:

一、看所有open的连接是否都close了。

二、如果访问量很大,加上Max   Pool   Size=512这一句,当然这是要以损失系统性能为代价的! 这样以后一定可以解决你的问题!

解决方案一

我 想原因可能是并发操作。DataReader是独占连接的,就是说你的程序可能设计上有问题。比如说最大连接设100,假设有100个人同时使用 DataReader正在读取数据库内容,那么当第101人读取的时候,连接池中的连接已经没有了,就会出现上面的错误。DataReader是独占连接 的,每个DataReader都要占用一个连接。当然这个情况是偶尔出现的,所以会很长时间出现一次,因为只有同时有超过连接池最大连接数量的并发操作才 会发生。而且你加大并发数量只能暂时缓解问题,如果你加大到200个并发连接,如果有201 人同时操作怎么办?你说了你使用Connection对象的Close()方法,这是不行的,因为Close()方法仅仅是关闭连接,但这个连接没有释 放,还是被这个对象占用,要释放必须使用Connection的Dispose()方法显式释放连接才可以,否则这个对象占用的连接只能等到垃圾收集的情 况下才能被释放。这种情况肯定会出现"超时时间已到"的错误。

解决方法:         

1 修改几个关键页面或访问比较频繁的数据库访问操作,使用DataAdapter和DataSet来获取数据库数据,不要使用DataReader。         

2 在访问数据库的页面上使用数据缓存,如果页面的数据不是经常更新(几分钟更新一次)的话,使用Cache对象可以不用访问数据库而使用缓存中的内容,那么可以大大减少连接数量。         

3 修改代码,把使用Connection对象的地方都在Close()后面加上Dispose()调用。         

4 建议对数据库操作进行大的修改,建立自己的数据库操作代理类,继承System.IDisposable接口,强迫释放资源,这样就不会出现连接数量不够的问题了。

解决方案二

解决方法(*):WEB.config 里面:在数据库连接加 Max Pool Size = 512;server=local;uid=;pwd=;database=2004;Max Pool Size = 512;">一劳永逸。

解决方案三

估计是连接(Connection)对象没有Close。倒是不必Dispose,而DataReader用完后应该关闭,但不关闭也没问题,只是不关闭的话此连接对象就一直不能用,只要你最终关闭了连接对象就不会出问题。          连接对象在Open后的操作都放在try块中,后面跟一个finally块:conn.Close();
---------------------
作者:翠花琳
来源:CSDN
原文:https://blog.csdn.net/chensirbbk/article/details/6225268
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/lhyqzx/p/9938452.html

相关文章:

  • 0228_2012深圳试题_网络配置部分
  • WPFのclipToBounds与maskToBounds的区别
  • 大家多开发点uwp吧
  • 虚拟机网络设置
  • 如何让apache支持3gp下载
  • 双11,我差点把它过成了。。。
  • Java笔记:transient关键字
  • Java分布式框架netty之NIO框架区别分析
  • Microsoft Dynamics CRM 2013 的权限管理与分配 (一)
  • 中小学校园网服务器采购指南
  • 测试计划驱动开发模式TPDD:一种比TDD更友好的开发模式
  • ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式
  • python - 文件处理/open
  • ICMP重定向
  • eve-ng 安装 cisco nxosv-finall.7.0.3.17.4.qcow2
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • CSS居中完全指南——构建CSS居中决策树
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • markdown编辑器简评
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • socket.io+express实现聊天室的思考(三)
  • SQLServer之索引简介
  • ViewService——一种保证客户端与服务端同步的方法
  • 对象引论
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 怎么将电脑中的声音录制成WAV格式
  • 正则与JS中的正则
  • Linux权限管理(week1_day5)--技术流ken
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 安徽锐锋科技IDMS系统简介
  • #控制台大学课堂点名问题_课堂随机点名
  • (33)STM32——485实验笔记
  • (poj1.2.1)1970(筛选法模拟)
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (十) 初识 Docker file
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)【Hibernate总结系列】使用举例
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET6 命令行启动及发布单个Exe文件
  • .Net的DataSet直接与SQL2005交互
  • .Net组件程序设计之线程、并发管理(一)