Timeout expired
问题描述
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
说明: 执行当前 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接口,强迫释放资源,这样就不会出现连接数量不够的问题了。
5SqlCommand myCommand = new SqlCommand(myInsertQuery);
myCommand.Connection.Close();
myCommand.Dispose();
解决方案二
解决方法(*):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();
最终一句话就是每次使用后都得关闭和释放资源!
Timeout expired相关推荐
- 连接池和 Timeout expired异常
转自:博客园宁静.致远:http://www.cnblogs.com/zhangzhu/archive/2013/10/10/3361197.html 异常信息: MySql.Data.MySqlCl ...
- MySql 长时间读数据发生超时的异常 Mysql Reader Exception TimeOut expired
mysql connector: .net var r = cmd.ExecuteReader() r.Reader() // <--长时间不停调用 Timeout expired. Th ...
- oracle之 RA-00054: resource busy and acquire with NOWAIT specified or timeout expired
1. truncate 表报 ORA-00054 ,标明有事务正在操作该表 SQL> truncate table alldm.DM_XQKD_YUJING_D; truncate table ...
- 【Flink】Flink exactly-once 报错 Timeout expired after 60000 milliseconds while awaiting InitProducerId
文章目录 1.概述 2.源码分析 1.概述 flink 开启了exactly-once,设置了transaction.id 然后flink一直不停重启,一直报错 org.apache.kafka.co ...
- 【Kafka】Flink kafka TimeoutException Timeout expired while fetching topic metadata
1.背景 一个服务突然不能工作了,数据有输入但是没有数据,好看数据输入进去就丢了,但是正常情况下,应该是最起码正确和错误都应该输出. 下面开始查看日志 docker exec -it xxxx bas ...
- 连接池和 Timeout expired异常【转】
异常信息: MySql.Data.MySqlClient.MySqlException (0x80004005): error connecting: Timeout expired. The tim ...
- ConnectionRead (WrapperRead())Timeout expired
ConnectionRead (WrapperRead())Timeout expired ■环境说明: 数据库系统:Microsoft Server 2000 (Sp4) 操作系统:Microsof ...
- 【Oracle】ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
今天在修改表字段类型时出现错误:ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired,看报错应该是 ...
- [译]连接池和 Timeout expired异常
原文标题:Connection Pooling and the "Timeout expired" exception FAQ 来源:http://blogs.msdn.com/a ...
- pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed
在使用python的pyvisa库函数通过visa指令控制仪器时,出现'pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout e ...
最新文章
- void *指针的加减运算
- 网页调用本地播放器的代码支持ie,chroome, 火狐不支持
- silverlight中递归构造无限级树treeview+checkbox
- java读取 info.plist源码_Java 解析 IPA 文件,读取 Info.plist 信息-Go语言中文社区
- Freemarker商品页面静态化
- 中切片工具怎么使用_PS软件中钢笔工具的使用,附视频
- Entity Framework Core 2.1带来更好的SQL语句生成方案
- JS中split对多个分隔符的处理
- MySQL如何有效的存储IP地址
- OpenVINO安装步骤
- linux dev input使用消失_Linux驱动04 | 启动分析之根文件系统
- 最小生成树之普里姆算法
- POJ3348 Cows
- 二层交换机和三层交换机的工作原理
- 西部世界IPFS科普:什么是非对称加密?
- Excel2007将汉字转换为拼音首字母
- Basics Algorithms| 岭回归(Ridge regression)
- 理解F.dropout 和nn.ReLU(inplace=True)中inplace的作用
- hx711c语言程序,STM32写的HX711程序
- win12服务器文件设置只读,高手亲自讲解win10文件夹只读属性改不了的修复办法...