2008-10-09 7 views
1

Je me demandais si cela semblait familier à toute expérience développeurs NHibernate ou si quelqu'un pouvait me donner une idée de l'endroit où commencer à essayer de résoudre ce problème:connexions de base de données NHibernate défaut sous charge

I a hérité d'une NHibernate site écrit en ASP.NET 1.1 utilisant NHibernate 0.6 et .NET remoting à la couche DAL résidant sur le serveur de base de données. J'ai essayé de le mettre à niveau vers ASP.NET 3.5 et NHibernate 1.2.1.4.

J'ai remplacé le programme d'installation distante .NET par une connexion directe à la base de données et tout fonctionne correctement jusqu'à ce que le site soit chargé, puis les appels NHibernate échouent par intermittence à lancer une exception: ADOException ne peut pas exécuter la requête déclarations.

La trace de pile donnée avec l'erreur est: NHibernate.Loader.Loader.LoadEntity (séance ISessionImplementor, Object ID, itype identifierType, objet optionalObject, type optionalEntityName, objet optionalIdentifier, IEntityPersister persister)

à NHibernate. Loader.Entity.AbstractEntityLoader.Load (séance ISessionImplementor, objet, objet optionalObject, objet optionalId)

à NHibernate.Loader.Entity.AbstractEntityLoader.Load (id objet, objet optionalObject, séance ISessionImplementor)

à NHibernate.Persister.Entity.AbstractEntityPersister.Load (id objet, objet optionalObject, LockMode LOCKMODE, séance ISessionImplementor)

à NHibernate.Impl.SessionImpl.DoLoad (type theClass, Objet, objet optionalObject, LockMode LOCKMODE, Boolean checkDeleted)

à NHibernate.Impl.SessionImpl.DoLoadByClass (type clazz, Object ID, Boolean checkDeleted, Boolean allowProxyCreation)

à NHibernate.Impl.SessionImpl.Load (type clazz, Object ID)

Merci!

Répondre

1
  • vérifiez vos paramètres de connexion.
  • si vous le pouvez, cache des objets autant que vous le pouvez pour éviter battering le serveur
  • assurez-vous que vous avez vos tables indexées ... c'est un énorme
  • faire de l'exploitation forestière de vous log4net est activé pour avertir/erreur de sorte que vous n'écrivez pas une encyclopédie dans les journaux
2

Problème était usine de session nhibernate non thread-safe. Changé le projet d'utiliser un module http pour utiliser une session nhibernate par requête (et veillé à ne pas ouvrir une session pour les requêtes sur des fichiers non .as * x) et tout va bien.

Questions connexes