2010-04-30 5 views
2

Il semble que s'il existe une fuite de mémoire sql quelque part et que vous n'ayez pas le temps de la trouver, vous pouvez utiliser l'option load balance timeout dans une chaîne de connexion sql pour désattribuer la connexion après x secondes. Ai-je raison de supposer que je peux régler le temps d'équilibrage de la charge à 30-40 secondes, puis rechercher la fuite, alors que, dans le même temps, la fuite n'affectera pas trop mon application.Délai d'équilibrage de la charge Chaîne de connexion SQL

+0

Qu'est-ce qui vous fait penser qu'il existe une "fuite de mémoire sql"? – n8wrl

+0

Sql Fuite de connexion désolé. Mon pool de connexions est à court de connexions. J'aurais dû le dire comme une fuite de connexion sql pas de mémoire –

Répondre

1

Non. Le Délai d'équilibrage de la charge est le temps minimum pour la connexion pour vivre dans la piscine, il ne limitera pas la durée de vie des connexions.

Vous cherchez peut-être la mise en vie de connexion, ce qui forcera les connexions à fermer quand ils sont trop vieux quand ils sont retournés à la piscine, mais ne vous aidera pas non plus, car le problème est que les connexions ne sont pas retournés à la piscine en premier lieu.

1

(aurait ajouté un commentaire à Guffa mais mon représentant est pas assez élevé)

Vous êtes presque raison sur le comportement du délai d'attente d'équilibrage de charge, au moins pour .NET 3.5+, et probablement plus tôt . Lors de la récupération d'une connexion à partir du pool, il tue tous ceux qui ont été ouverts pendant le nombre de secondes spécifié. L'utilisation normale est bien sûr pour l'équilibrage de charge. Voici le doco ambigu pour .NET 3.5, à clarifier les commentaires en bas:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.90%29.aspx

Et est ici un gars de MS de 2004 en disant la même chose:

http://blogs.msdn.com/b/angelsb/archive/2004/09/20/231963.aspx

EDIT: Je Je viens de réaliser que ce paramètre n'aiderait pas le cas décrit, car les connexions ne sont détruites que lorsqu'elles sont extraites du pool. Les connexions fuites ne sont plus jamais récupérées depuis la piscine, car "fuir" signifie qu'elles ne sont jamais renvoyées à la piscine.

Questions connexes