À l'aide de l'analyseur de Performances pour surveiller les connexions pool
Je suis enquêter sur cette erreur à partir d'un MVC3 application qui est un échec en charge:
"Le délai écoulé avant l'obtention d'une connexion à partir de la piscine. Cela peut avoir lieu, car toutes les connexions ont été mis en commun dans l'utilisation et max de la taille du pool a été atteint."
L'application utilise le modèle de Référentiel et Entity Framework, et mon intuition est que ce n'est pas de fermer les connexions correctement. Je veux être en mesure de suivre le nombre de connexions regroupées sur le Serveur SQL. La recherche autour de me mène à croire que je peux utiliser ces compteurs Perfmon:
- .NET CLR Données
- .NET Data Provider for sql server
Cependant deux d'entre eux de montrer et d'être désactivé /grisé.
Je suis en cours d'exécution Perfmon directement sur le serveur, et à la fois de l'ISS et SQL Server sont en cours d'exécution sur le serveur. Des idées pourquoi ces compteurs ne serait pas disponible?
J'ai aussi essayé d'utiliser le générateur de profils SQL pour surveiller les connexions regroupées, mais la colonne EventSubClass n'est pas disponible pour AuditLogin.
Oui, si j'essaie d'ajouter ces moniteurs, rien ne se passe. Et je suis un admin sur la machine
OriginalL'auteur VincentH | 2013-08-16
Vous devez vous connecter pour publier un commentaire.
Vous pouvez l'exécuter à partir d'une requête SQL windows pour obtenir le nombre et le détail des connexions et de la session en cours d'exécution sur votre serveur SQL server.
J'ai eu du mal avec les connexions. Ils sont difficiles à contrôler. Explicitement leur fermeture ne semblait jamais le travail, car ils sont sous le contrôle de .NET. La principale raison pour laquelle nous n'avons plus de connexions transactions non validées. Si une transaction est de gauche non validée ou annulée pour une raison quelconque, la connexion, au lieu d'être ré-utilisé, est coincé dans les limbes, forçant .NET ouvrir encore une autre connexion pour continuer le traitement.
Il ne semble pas être une dynamique, queriable façon de savoir si une connexion en direct est mis en commun. Tous les exemples que j'ai vu invoqué a) création d'une table et d'un déclencheur pour stocker les données de connexion et b) à l'aide de la connexion de données d'événement (qui contient IsPooled) pour remplir le tableau. Il y a un exemple ici:sqlservercentral.com/Forums/Topic798425-146-1.aspx#bm798660
OriginalL'auteur Brian
De SQL côté, la seule manière viable de l'examen c'est par la mise en place d'un identifiant de suivi d'événements. L'Événement de "sous-classe" colonne vous dira si l'événement s'est produit à l'aide d'un pool de connexion ou pas. Avec cela, vous pouvez mettre en corrélation l'hôte, de connexion, de noms et d'application et de continuer à creuser.
La Connexion D'Audit De La Classe Event
Sur le côté application, vous pouvez utiliser les compteurs de performance ".NET DATA PROVIDER FOR SQL SERVER" perfmon.
Des Compteurs de Performance ADO.NET
OriginalL'auteur Salvador L