Bonjour,
Je gère une application en VB.net et ASPx.
Celle-ci fait des connexions (beaucoup) à un serveur SQL Server via une DLL COM+ développée en VB sur laquelle je n'ai pas la main. J'utilise juste la DLL.
Le problème c'est que ces connexions ne sont pas détruite et donc s'accumulent.
j'ai donc effectué plusieurs tests et le code de l'application est bon, la connexion n'est ouverte uniquement lorsqu'on en a besoin et refermée derriere mais pourtant elle persiste.
Ce qui est etrange, c'est que j'ai refait le meme code dans un projet exe (donc pas web) les connexions sont bien tuées.
Ce qui m'amène a penser qu'avec ASPx, il y a un pool de connexion qui est géré sur le serveur IIS et qui garde les connexions sous le coude, au cas ou... si on peut parler ainsi.
Ce qui expliquerait avec un exe, pas de connexion vacante, avec IIS oui.
j'ai d'ailleurs trouvé un post sur cela:
Microsoft conseille d'ouvrir une connection a une db le plus tard possible et de la fermer le plus tot possible.
Les tests que j'ai fait m'on prouve que c'etait vrai. Il n'est pas interessant d'avoir une connection toujours ouverte (de plus ca devient le casse-tete pour les datareaders qui exigent une connection pour eux tous seuls)
En fait les connections a la base de donnees sont mises dans une sorte de cache, ca s'apelle le connection pooling. Et ca marche assez bien.
Attention pour recuperer des connections mises en cache dans le pool, il faut garder exactement la meme connectionstring (espaces compris!)! sinon il ne recupere pas les connections en cache, mais en cree une nouvelle
J'aimerais donc savoir si vous avez des info sur ces pool de connexion et si ma reflexion est juste. Si vous avez de la doc ou des liens...
comment augmenter ce pool, comment tuer les connexions qu'il contient etc...
Biensur je cherche de mon coté.
Partager