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

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

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


问题描述

最近有用户的系统偶尔提示“超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小” , 目前Max Pool Size = 512。


解决方案:


一、查看所有Connection连接,Open的连接必须都Close。


C# Code:


/// <summary>
/// 关闭SQL连接
/// </summary>
/// <param name="connection">当前连接</param>
public void CloseConnection(DbConnection connection)
{
  
if (connection != null)
  {
    
if (connection.State != ConnectionState.Closed) connection.Close();
    connection.Dispose();
//释放资源!
    
}
  }
  
  
//来源:C/S框架网 | www.csframework.com | QQ:23404761



二、如果访问量很大,加上Pooling=True;Max Pool Size=32767。SQLSERVER的最大连接数: 32767。


C# Code:

string connStr="Server=.;Database=CSFrameworkTest;User ID=sa;Password=test;pooling=true;connection lifetime=0;min pool size = 1;max pool size=32767";

//来源:C/S框架网 | www.csframework.com | QQ:23404761


三、若上面方法还是不能解决问题,把连接字符串Pooling=False,改为实时连接模式,确保每次访问数据库完成,把Open的连接都Close。


参考调用方法:


C# Code:


/// <summary>
/// 执行SQL语句并返回受影响的行数。
/// </summary>
/// <param name="DBName">帐套的数据库名</param>
/// <param name="command">SQL命令</param>
/// <returns></returns>
public int ExecuteSQL(string DBName, string SQL)
{
  SqlConnection connection
= this.CreateConnection(DBName);
  
try
  {
    SqlCommand cmd
= new SqlCommand(SQL, connection);
    cmd.CommandTimeout
= COMM_TIME_OUT;
    
int iValue = cmd.ExecuteNonQuery();
    
this.CloseConnection(connection);
    
return iValue;
  }
  
catch (System.Exception ex)
  {
    
this.CloseConnection(connection);
    
throw ex;
  }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

超时时间但是尚未获取连接出现这种情况可能因为所有连接使用并且达到大小
使用T-SQL语句配置SQL Server连接允许的并发用户连接数目
SQL Server连接基本原理
WCF错误“这可能因为HTTPS情况使用HTTP.SYS未正确配置服务器证书”
SQLServer连接字符串连接详解,Pooling=True/False区别
C#.Net使用线程(ThreadPool)与专用线程(Thread)
SQL连接完整测试报告
更改连接字符串超时时间
SQL连接字符串设置连接
使用WCF连接有效解决访问IIS承载的WCF出现SendTimeOut连接超时或IIS死机的问题
VS2010出现无法嵌入互操作类型
当接口的参数较多并且可能更改的情况使用结构体更易扩展
使用递归获取TreeList所有勾选的结点
WCF服务错误:System.TimeoutException: 请求通道等待 00:01:00 以后答复时超时
尝试释放正使用的RCW,活动线程或其他线程上正使用该RCW
C#使用StreamWriter文本文件末尾添加一行内容
SQL查看当前数据库所有请求的情况,包括登录用户,登录时间连接数目
什么软件架构?
什么WebService?
C# 更新SQL数据发生错误:不能创建大小为 8133 的行,该大小大于所允许的大小 8060。