2009-12-23 4 views
0

Nous avons une application qui utilise NHibernate pour se connecter à notre base de données sur SQL Server. Nous utilisons l'association de connexions et l'approche session par requête pour exécuter nos requêtes sur SQL Server. Nous avons utilisé SQL Server Activity Monitor pour surveiller le nombre de connexions et nous avons constaté que 25 à 30 connexions étaient concernées chaque fois qu'un utilisateur se connectait au système. Alors, voici ma question à poser: un grand nombre de connexions à SQL Server peut-il entraîner des problèmes de performances?est-ce que les connexions comptent?

+0

Utilisez-vous le regroupement de connexions? Avez-vous des applications/instances qui touchent la même base de données? – RichardOD

+0

la réponse aux deux questions est oui.Nous utilisons ADO.net intégré dans le mécanisme de mise en commun de la connexion et il y a près de 100 utilisateurs qui utilisent notre application. – Beatles1692

Répondre

2

Chaque connexion à SQL Server nécessite l'allocation d'une certaine quantité de mémoire et il existe donc une considération de performance à cet égard.

Dans le schéma des choses cependant, 20-30 connexions est un très petit nombre. Avez-vous vérifié que toutes les connexions appartiennent à votre application? La raison que je demande est parce que SQL Server lui-même va établir et maintenir un certain nombre de connexions/sessions dans le cadre de l'opération globale des serveurs.

Certains usefull pour vous de DMV à surveiller:

select * from sys.dm_exec_connections 
select * from sys.dm_exec_sessions 

session ID de 51 ci-dessus sont à l'extérieur de SQL Server pour ainsi dire, à savoir les sessions utilisateur.

Suite aux commentaires:

SQL Server 2005 peut prendre en charge jusqu'à 32.767 connexions. Pour vérifier votre capacité d'exécuter:

select @@MAX_CONNECTIONS 

Si la mise en commun de connexion est utilisée, les connexions restent ouvertes et dans un état de sommeil jusqu'à ce que nécessaire pour les demandes de traitement. Alternativement, peut-être que l'application ne ferme pas les connexions lorsque les requêtes ont fini de traiter.

Je ne peux que commenter du point de vue de SQL Server car je ne suis pas familier avec la mécanique de NHibernate.

+0

merci pour votre réponse.Je suis positivement sûr que ce sont nos connexions d'application et il est 20-30 connexion par utilisateur et comme nous avons près de 100 utilisateurs qui travaillent avec notre application, une moyenne de 400-500 connexions sont impliqués (après la connexion dans une application un utilisateur a 3 connexions). Une chose que je ne peux pas comprendre est que beaucoup d'entre eux sont en mode veille. – Beatles1692

Questions connexes