NHibernate的数据库连接负载

我在想,如果这个似乎熟悉的任何经验NHibernate的开发或正在失败,如果有人能够给我一个想法,从哪里开始,试图解决这个问题:NHibernate的数据库连接负载

我继承了NHibernate的网站使用NHibernate 0.6和.NET远程处理在ASP.NET 1.1中编写的驻留在数据库服务器上的DAL层。我一直在尝试将其升级到ASP.NET 3.5和NHibernate 1.2.1.4。

我用直接数据库连接替换了.NET远程设置,一切正常,直到网站获得一些负载,然后NHibernate调用开始间歇性地失败抛出异常:ADOException无法执行查询,然后是NHibernate生成的SQL声明。

与误差给出的堆栈跟踪是: NHibernate.Loader.Loader.LoadEntity(ISessionImplementor会话,对象ID,ITYPE identifierType,对象optionalObject,类型optionalEntityName,对象optionalIdentifier,IEntityPersister持留)在NHibernate的

。 Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor会议,对象ID,对象optionalObject,对象optionalId)

在NHibernate.Loader.Entity.AbstractEntityLoader.Load(对象ID,对象optionalObject,ISessionImplementor会话)

在NHibernate.Persister.Entity.AbstractEntityPersister.Load(对象ID,对象optionalObject,LockMode lockMode,ISessionImplementor会话)

在NHibernate.Impl.SessionImpl.DoLoad(键入theClass描述,对象ID,对象optionalObject,LockMode lockMode,布尔checkDeleted)

在NHibernate.Impl.SessionImpl.DoLoadByClass(类型clazz中,对象ID,布尔checkDeleted,布尔allowProxyCreation)

在NHibernate.Impl.SessionImpl.Load(类型clazz中,对象ID)

谢谢!

回答:

  • 验证您的连接设置。
  • 如果可以的话,缓存中的对象,就像你可以避开殴打服务器
  • 确保你有你的表建立索引...这是一个巨大的一个
  • 确保log4net的的日志记录被警告/错误,所以你不写一个百科全书日志

回答:

问题是非线程安全的nhibernate会话工厂。更改项目使用http模块为每个请求使用一个nhibernate会话(并且确保不打开非.as * x文件中的rquests会话),并且一切正常。

以上是 NHibernate的数据库连接负载 的全部内容, 来源链接: utcz.com/qa/257604.html

回到顶部