简体   繁体   English

SQL Server:已达到最大池大小

[英]SQL Server: Max pool size was reached

I'm observing following errors while connecting SQL Server from c# application whenever application pool get recycled. 每当应用程序池被回收时,我都会在从c#应用程序连接SQL Server时观察到以下错误。 I've checked when this errors received there was only 20 connection open in the database despite actual limit is 200(that I set in web.config). 我已经检查过这个错误收到的时候,数据库中只打开了20个连接,尽管实际限制是200(我在web.config中设置)。

Also, connections are properly closed in code so that would not be an issue. 此外,连接在代码中正确关闭,因此不会成为问题。 Please note that it doesn't occur every time when pool recycled but happens during a day when we have traffic on our system. 请注意,每次游泳池回收时都不会发生这种情况,但在我们的系统有交通的一天中就会发生。

System.InvalidOperationException: Timeout expired. System.InvalidOperationException:超时已过期。 The timeout period elapsed prior to obtaining a connection from the pool. 从池中获取连接之前经过的超时时间。 This may have occurred because all pooled connections were in use and max pool size was reached. 这可能是因为所有池连接都在使用中并且达到了最大池大小。 at 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 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.SqlClient.SqlConnection.Open() 在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.SqlClient.SqlConnection.TryOpen的System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource )处的System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 。 System.Data.SqlClient.SqlConnection.Open()上的System.Data.SqlClient.SqlConnection.Open()中的(TaskCompletionSource`1重试)

Every time you Open the Connection, make sure that you have to close it. 每次打开连接时,请确保必须将其关闭。

Max pool size was reached 达到最大池大小

Try this: 尝试这个:

    SqlConnection cn = new SqlConnection(strCn);
    try
    {
        using (SqlCommand cmd = new SqlCommand("select * from xxxx", cn))
        {
            cn.Open();

            //do something

            cn.Close();
        }
    }
    catch (Exception exception)
    {
        cn.Close();
        throw exception;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM