2013-05-17 2 views
0

Я знаю, что в Stack Overflow возникает аналогичный вопрос, но он не совсем подходит для того, что я пробовал. Я считаю, что причина этой проблемы различна, хотя конечный результат тот же.Проблемы с пулом подключений на общем хостинге с правильной утилизацией

Всякий раз, когда мой сайт работает около двух или трех дней, я получаю следующую ошибку (что, очевидно, вызвано либо подключением/запросами, либо неправильным расположением).

Истек срок истекло. Период ожидания истекает до получения соединения из пула. Возможно, это произошло из-за того, что все объединенные соединения использовались и максимальный размер пула был достигнут.

Сначала я сделал некоторые исследования и понял, что с помощью using, используя finalize вызова и другие решения не было достаточно. Ошибка все равно произойдет.

Поэтому я решил выяснить, не работает ли Explorer Server (который я часто использую) в соединениях с утечками Visual Studio. Я уже изменил максимальное время выполнения и тайм-аут подключения на 3 секунды и уменьшил размер пула до 10 подключений, поэтому причиной этого может послужить Server Explorer. Не повезло!

Итак, что мне теперь нужно?

ответ

-1

Вот код, с которым я решил проблему. При подключении, перехватите исключение и очистите все пулы, а затем повторите попытку.

_connection = 
    new SqlConnection(connectionString); 
try 
{ 
    _connection.Open(); 
} 
catch (InvalidOperationException) 
{ 
    SqlConnection.ClearAllPools(); 
    _connection.Open(); 
} 

Кроме того, при удалении соединения необходимо очистить бассейны.

if (_connection != null) 
{ 
    SqlConnection.ClearAllPools(); 
    _connection.Close(); 
    _connection.Dispose(); 
} 
+0

Это не решение. В лучшем случае вы лечите симптомы, а не проблему. – usr

+0

Это решение, поскольку проблема заключается в том, что одновременно с одновременным подключением пользователей слишком много пользователей. –

+0

В этом случае истинным решением будет: a) увеличить размер пула и b) найти утечки и исправить их. Возможно, c) удерживайте соединение открытым на более короткое время. – usr

Смежные вопросы