Проблемы с пулом соединений Nhibernate - PullRequest
3 голосов
/ 10 июля 2011

у нас возникают проблемы с пулом соединений с Nhibernate в веб-приложении MVC3, которое работает с SQL Express и обрабатывает несколько одновременных запросов на основе AJAX.

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

NHibernate.Util.ADOExceptionReporter
Тайм-аут истек. Время ожидания истекло до получения соединения из пула. Это могло произойти из-за того, что все пул соединений использовался и был достигнут максимальный размер пула.

тогда нагрузка

При подготовке выберите TOP (@ p0)
....
произошла ошибка

Мы должны перезапустить пул приложений IIS, чтобы после этого не возникало 500 ошибок.

Глядя на SQL Server, мы видим:

select * from sys.dm_exec_sessions

... дает около 30 сеансов с идентификаторами выше 51 (т.е. пользовательских сеансов)

select * from sys.dm_exec_connections 

... дает примерно столько же

НО

select @@connections

... дает результаты с 79022

Указывает ли это на то, что соединения никогда не разрываются?

Сессии Nhibernate предназначены для времени жизни запроса.

Кто-нибудь испытывает что-либо подобное или может указать нам правильное направление?

Большое спасибо

Richard

1 Ответ

5 голосов
/ 10 июля 2011

Вы не можете иметь более чем 32767 подключения к SQL Server.

@@ CONNECTIONS также дает (выделено жирным шрифтом)

Возвращает количество попыток подключений, успешных или неудачных с момента последнего запуска SQL Server.

Не текущее соединение

Я подозреваю, что ваш пул настроен неправильно, поэтому он слишком быстро исчерпан.

Или вы не освобождаете соединенияправильно, и вы проверяете SQL Server после перезапуска IIS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...