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

时间:2015-01-07 11:07:59

标签: asp.net connection max connection-pooling

我在托管申请后遇到以下错误:

错误页面:http://********.in/Presentation Layer / NewQuotation.aspx

错误消息:超时已过期。从池中获取连接之前经过的超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。

StackTrace:在System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1重试,DbConnectionOptions userOptions)    在System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1重试)    在System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1重试)    在System.Data.SqlClient.SqlConnection.Open()    在Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection()    在Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection(Boolean disposeInnerConnection)    在Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DbCommand命令)    在F:\ gayathri reddy \ Enq Quote \ 06-01-2015 \ DataLayer \ Quotation_DL.cs中的DataLayer.Quotation_DL.insertQuoteproduct(QuotationProductCombination _objQP):第430行    在BusinessLayer.Quotation_BL.insertQuoteproduct(QuotationProductCombination _objQpc)中的F:\ gayathri reddy \ Enq Quote \ 06-01-2015 \ BusinessLayer \ Quotation_BL.cs:第88行    在EngQuote.Presentation_Layer.NewQuotation.Quotationsave(Int32 status,String oper)中的F:\ gayathri reddy \ Enq Quote \ 06-01-2015 \ EngQuote \ Presentation Layer \ NewQuotation.aspx.cs:line 3711

但是在本地Visual Studio 2010中运行代码时没有问题,当我在服务器或本地计算机IIS或共享主机服务器中托管它时,我们只面临这个问题

我尝试过所有这些步骤,但没有任何改进

1)。在每个DL功能中打开并关闭连接

2)。以这种方式增加命令时间                  DbCommand cmd = db.GetStoredProcCommand(" Procedurename");                 cmd.CommandTimeout = int.MaxValue;                 SqlDataReader sdata =(SqlDataReader)db.ExecuteReader(cmd);

3)。在Web配置中增加连接超时

  

4)。在web配置中增加executionTimeout

       

5)。增加关机时间

6)。更改了debug = false

但没有用,长时间进程仍然存在连接超时问题 请建议除上述选项以外的任何解决方案 期待来自各国人民的这个问题的良好解决方案 提前谢谢....

1 个答案:

答案 0 :(得分:3)

我认为IIS和SQL Server之间的连接速度太慢,无法提供连接。只需确保未达到最大连接限制。您可以通过执行以下select语句来确认。

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame

您可以尝试增加连接字符串中的池大小。但这会有一些缺点。下面是池大小增加的示例连接字符串。 server=localhost;database=dbname;uid=username;pwd=paswrd;Max Pool Size=200;