Сбой соединения с базой данных NHibernate - PullRequest
1 голос
/ 09 октября 2008

Мне было интересно, знаком ли это кому-либо из разработчиков NHibernate или кто-то может дать мне представление о том, с чего начать, чтобы попытаться решить эту проблему:

Я унаследовал сайт NHibernate, написанный на ASP.NET 1.1, с использованием NHibernate 0.6 и удаленного взаимодействия .NET с уровнем DAL, находящимся на сервере базы данных. Я пытался обновить его до ASP.NET 3.5 и NHibernate 1.2.1.4.

Я заменил настройку удаленного взаимодействия .NET на прямое соединение с базой данных, и все работает нормально, пока сайт не нагружается, а затем вызовы NHibernate периодически перестают выдавать исключение: ADOException не может выполнить запрос с последующими сгенерированными операторами NHibernate SQL .

Трассировка стека, указанная с ошибкой:

NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, Type optionalEntityName, Object optionalIdentifier, IEntityPersister persister)
   at NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId)
   at NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id, Object optionalObject, ISessionImplementor session)
   at NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor session)
   at NHibernate.Impl.SessionImpl.DoLoad(Type theClass, Object id, Object optionalObject, LockMode lockMode, Boolean checkDeleted)
   at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation)
   at NHibernate.Impl.SessionImpl.Load(Type clazz, Object id)

Ответы [ 2 ]

2 голосов
/ 10 октября 2008

Проблема в том, что фабрика сессий nhibernate не является поточно-ориентированной. Изменен проект, чтобы использовать модуль http для использования одного сеанса nhibernate для каждого запроса (и следил за тем, чтобы не открывать сеанс для запросов на файлы не .as * x), и все в порядке.

1 голос
/ 09 октября 2008
  • проверьте настройки подключения.
  • если можете, кэшируйте объекты как можно больше, чтобы избежать нагрузки на сервер
  • убедитесь, что ваши таблицы проиндексированы ... это огромное
  • убедитесь, что запись в log4net включена для предупреждения / ошибки, чтобы вы не записывали энциклопедию в журналы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...