估计是链接的人过多,而链接没有释放,你可以考虑再链接字符串中把链接池的数量设大些! 如:"server=localhost;user id=sa;password=;pooling=true;max pool size=200;"
在连接字符串中配置Connection Pool的大小 "Server=...;Username=...password=...;Max Pool Size=100;Min Pool Size=5;Pooling=true;"
用完连接以后一定要关闭,包括DataReader都要关闭 conn.close()关闭连接 conn.dispose()把连接放释放回连接池 你看看程序是否做到了这几点
问:
超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。
怎么回事??
///
百度了一下,有的说是conn没close,有的说应该把conn.dispose(),
还有的说sqlDataReader用过后应该close掉,
我都试了,好象发生这种情况的次数减少了,
但还有这样一个怪问题,就是一个页面刷新32次后就会出现这种情况.
估计是连接(Connection)对象没有Close。倒是不必Dispose,而DataReader用完后应该关闭,但不关闭也没问题,只是不关闭的话此连接对象就一直不能用,只要你最终关闭了连接对象就不会出问题。
连接对象在Open后的操作都放在try块中,后面跟一个finally块:conn.Close();
方法有以下两种:
1,在web.config中加上以下语句:
executionTimeout="720" />
来自MSDN解释:
httpRuntime是配置asp.Net http运行时设置,以确定如何处理对asp.Net应用程序的请求。
executionTimeout:表示允许执行请求的最大时间限制,单位为秒
maxRequestLength:指示 ASP.Net
支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为
4096 KB (4 MB)。
useFullyQualifiedRedirectUrl:表示指示客户端重定向是否是完全限定的(采用 "http://server/path"
格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。如果为
True,则所有不是完全限定的重定向都将自动转换为完全限定的格式。false 是默认选项。
minFreeThreads:表示指定允许执行新请求的自由线程的最小数目。ASP.Net
为要求附加线程来完成其处理的请求而使指定数目的线程保持自由状态。默认值为 8。
minLocalRequestFreeThreads:表示ASP.Net
保持的允许执行新本地请求的自由线程的最小数目。该线程数目是为从本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。这避免了可能的因递归重新进入
Web 服务器而导致的死锁。
appRequestQueueLimit:表示ASP.Net
将为应用程序排队的请求的最大数目。当没有足够的自由线程来处理请求时,将对请求进行排队。当队列超出了该设置中指定的限制时,将通过“503
- 服务器太忙”错误信息拒绝传入的请求。
enableVersionHeader:表示指定 ASP.Net 是否应输出版本标头。Microsoft Visual Studio
2005 使用该属性来确定当前使用的 ASP.Net 版本。对于生产环境,该属性不是必需的,可以禁用。
2,解决方法很简单,在代码中找到命令对象比如SqlCommand对象,给CommandTimeOut属性赋一个比较大的值。比如60秒,SqlCommand缺省超时设定是30秒。也可以将sqlcommand的timeout属性设为0.
备注:
值 0 指示无限制,在 CommandTimeout 中应避免值 0,否则会无限期地等待执行命令。
[C#]
public void CreateMySqlCommand()
{
SqlCommand myCommand = new
SqlCommand();
myCommand.CommandTimeout =
15;
myCommand.CommandType =
CommandType.Text;
}
see
as:http://msdn.microsoft.com/library/CHS/cpref/html/frlrfsystemdatasqlclientsqlcommandclasscommandtimeouttopic.asp?frame=true
SqlDataAdapter da= new SqlDataAdapter(); da.SelectCommand.CommandTimeout = 60;