Я получаю эту ошибку, из-за которой мое приложение перестает работать. Timeout expired.
Период ожидания, прошедший до получения соединения из пула. Возможно, это произошло из-за того, что все объединенные соединения использовались и максимальный размер пула был достигнут.Возможно утечка соединения. Причина. Истекло время ожидания. Прошел период ожидания до получения соединения из пула?
Однако я еще не достиг своего пула соединений max. У меня есть RDS, и на моей странице мониторинга я обнаружил, что число подключений было 33 на момент возникновения этой ошибки, а мой max один по умолчанию.
Итак, мне было интересно, что это может быть связано с утечкой в моей связи.
Это DBLayer
класс, который я использую для связи с базой данных.
public static DataTable GetDataTable(SqlCommand command, IsolationLevel isolationLevel = IsolationLevel.ReadUncommitted)
{
using (new LoggingStopwatch("Executing SQL " + command.CommandText, command.Parameters))
{
using (var connection = new SqlConnection(connectionString))
using (var dataAdapter = new SqlDataAdapter(command))
{
command.Connection = connection;
command.CommandTimeout = ShopexConfiguration.SqlTimeout;
connection.Open();
var transaction = connection.BeginTransaction(isolationLevel);
command.Transaction = transaction;
try
{
var result = new DataTable();
dataAdapter.Fill(result);
transaction.Commit();
return result;
}
catch
{
try
{
transaction.Rollback();
}
catch (Exception)
{
//
// This catch block will handle any errors that may have occurred
// on the server that would cause the rollback to fail, such as
// a closed connection.
}
throw;
}
}
}
}
Мне просто интересно, это приведет к утечке соединения?
Я видел этот блог:
любая помощь?
Это может быть длинный снимок, но существует ли ограничение на количество открытых подключений на пользователя * на сервере *? –