I am working on an application using WebApi and AngularJS. I am getting this exception after spending sometime to application. I am using EntityFramework in this app.
"Timeout expired. 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."
Stack Trace
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
↵ at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool.
"Timeout expired. 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." Show activity on this post.
"the 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. Inner Exception:>>" So you can also increase the Connection Pool Size.
The timeout period elapsed prior to obtaining a connection from the pool. - Stack Overflow Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. Bookmark this question. Show activity on this post. I am working on an application using WebApi and AngularJS.
Close your database connections (it's really important).
SqlConnection myConnection = new SqlConnection(ConnectionString);
try
{
conn.Open();
someCall (myConnection);
}
finally
{
myConnection.Close();
}
or
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
myConnection.Open();
someCall(myConnection);
}
Check how many users are connected to your database and the time out for querys. Check too if you have long time executing querys.
Perhaps, duplicate question:
How can I solve a connection pool problem between ASP.NET and SQL Server?
When does Entity Framework open and close Database Connections?
Please try the following things
Always close your connection in the finally block
Increase pool size like in your connection string string connectionString = "Data Source=localhost; Initial Catalog=Northwind;" + "Integrated Security=SSPI; Min Pool Size=10; Max Pool Size=100";
or
Don't use pooling at all string connectionString = "Data Source=localhost; Initial Catalog=Northwind;" + "Integrated Security=SSPI; Pooling=false;";
I just experienced the same problem. I ended up using a pattern like this which seemed to fix the issue:
using (SqlConnection con = new SqlConnection(strCon))
{
using (SqlCommand cmd = new SqlCommand(strCmdText, con))
{
con.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
//do stuff;
dr.Close();
}
}
con.Close();
}
This seemed to fix my problem. DataReader.Close()
was the nail that did it. It seems like MS should change their recommendation since I've found it all over their site suggesting not to use the try { } finally { con.Close(); }
pattern. I didn't try this explicitly, since the pattern is fairly pervasive throughout our entire db layer and wanted to find something closer.
I hope this helps someone.
It was suggested to use the using statement around SqlConnection and SqlCommand objects.
Please note that if you have a function returning an IEnumerable with the use of yield return in a SqlDataReader loop, this is not the recommended pattern. Doing so, the connection to the database will be closed before the data reader will be executed.
Instead, apply the CommandBehavior.CloseConnection parameter to the ExecuteReader call.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With