从池中获取连接之前经过的超时时间

时间:2009-01-27 20:01:33

标签: asp.net ado.net

我每隔几天就会收到这个错误。我不会在几天内看到错误,然后我会在一分钟左右的时间内得到20左右的一阵狂欢。

我一直非常彻底地抛出我的代码,以便我使用这个基本设置进行数据库访问。

try
{
  myConnection.Open();
  mySqlDataAdapter.Fill(myDataTable);
  myConnection.Close();
}
Catch (Exception err)
{
  if (myConnection.State != ConnectionState.Closed) myConnection.Close();
  throw err;
}

我理解它的方式应该执行我的查询并立即将连接释放回池中但是如果查询出现问题,那么我抓住excpetion关闭我的连接然后抛出错误,最终被困在应用程序级别和日志并通过电子邮件发送错误。

即使在我的代码中使用它,我仍然遇到了这个问题。我该怎么做才能诊断问题的根本原因?

4 个答案:

答案 0 :(得分:3)

问题是您可以在池中拥有的池连接数。

在您的连接字符串中,您可以添加 “最大泳池大小= 100” 属性以增加池的大小。但是,这听起来像是在同时运行大量的SQL查询,所有这些查询都在长时间运行。也许您应该考虑缩短查询或通过单个连接顺序运行查询的方法。

答案 1 :(得分:1)

将代码更改为类似内容会使其更易于阅读..

try
{
  myConnection.Open();
  mySqlDataAdapter.Fill(myDataTable);
 }
Catch (Exception err)
{
  throw err;
}
finally
{
 myConnection.Close();
}

但这对你的超时没有帮助..

这听起来像填充语句需要很长时间。或者问题实际上是在其他地方,你没有连接。 SQL分析可以帮助确定select语句是否需要很长时间..

答案 2 :(得分:0)

如果您正在使用MSSQL设置一天运行一天或两天的配置文件.. 将配置文件保存到文件或表中,文件应该更快......

然后让脚本将该文件读取到表中,您可以轻松查询它以查找运行时间最长的查询。

答案 3 :(得分:0)

这是一个简单的问题。您是否偶然访问了访问数据库,因为您可以同时拥有的连接数有限制,这将导致您的错误类型。 SQL服务不应该有同样的问题。

如果您正在运行SQL Server,请关闭连接池,看看它是否会对您的应用产生影响。

大约5年前,当我们的公司发展迅速时,我们发现了我们的系统,当我们开始不断地达到用户上限时,我们基本上打破了访问权限。我们在大约24小时内切换到SQL,并且从那时起就没有问题。