> Tech > Activer, régler et désactiver le connection pool

Activer, régler et désactiver le connection pool

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Quand vous utilisez le SqlClient .NET Data Provider pour accéder à  SQL Server 7.0 et ultérieur, vous devez créer un nouvel objet SqlConnection et définir (set) sa propriété ConnectionString. Dans la propriété ConnectionString, choisissez le paramétrage de sécurité voulu, pointez sur le serveur et établissez le protocole de communication. Cette

propriété est le seul
moyen de changer le comportement
de SqlClient .NET Data Provider et de
contrôler son mode d’interaction avec
le connection pool. En utilisant les
mots-clés ConnectionString appropriés,
vous pouvez désactiver le pooling,
changer la taille du pool et ajuster
son fonctionnement.

Comprendre les options de connection-
pool.

Le tableau 1 définit les motsclés Sql Client . Sql Connection.ConnectionString qui
déterminent comment le .NET Data
Provider gère le connection pool pour
la connexion spécifique que vous ouvrez.
Vous pouvez définir ces mots-clés
connexion par connexion, ce qui signifie
que certains objets Connection seront
poolés et pas d’autres.

Désactiver le connection-pooling.
Il est intéressant d’utiliser une
connexion non poolée dans deux cas :
pour mieux contrôler personnellement
l’état de connexion côté serveur
ou pour déboguer un problème de
connection pooling. Sachez qu’il est facile
de désactiver connection pooling.
Il suffit de donner la valeur False à  l’argument
Pooling dans la ConnectionString
et le .NET Data Provider ne
poolera pas l’objet Connection que
vous avez ouvert en utilisant cette option.
La méthode Open établira une
nouvelle connexion vers le serveur (s’il
y en a un de disponible) et, quand vous
utiliserez la méthode Close, le .NET
Data Provider fermera immédiatement
la connexion serveur. Le serveur peut
refuser une requête connection-open
dans deux cas : si vous avez épuisé le
nombre de connexions autorisées par
le sa ou si vous avez dépassé le nombre
de licences de connexions enregistrées
pour le serveur. Si vous êtes éloigné du
serveur pour une raison quelconque,
votre code doit afficher un message invitant
votre utilisateur à  revenir plus
tard ou simplement à  attendre et réessayer.

Régler la taille de pool maximale.
Le
mot-clé Max Pool Size permet de déterminer
combien de connexions le
pool contiendra. Par défaut, le .NET
Data Provider permet d’accumuler 100
connexions dans chaque pool. Cela ne
signifie pas que l’on peut commencer
avec 100 objets SqlConnection ou 100
connexions, mais simplement qu’il
n’est pas possible de créer plus de 100
connexions par pool. Si vous essayez
de dépasser la limite maximale que
vous avez établie, votre application attendra
jusqu’à  ce que vous ayez franchi
la limite ConnectionTimeout ou jusqu’à 
ce qu’une connexion se libère
dans le pool, après quoi elle créera une
exception. Max Pool Size ne limite pas
le nombre de pools que vous pouvez
créer, cette limite est déterminée par le
nombre de connexions SQL Server que
votre valeur sa ou licence met à  disposition
(environ 32 768 par cluster).
Dans certains cas, vous pourriez
laisser un ou plusieurs objets Sql-
Connection connectés dans un pool
pendant une durée indéfinie. Dans ce
cas, donnez au mot-clé Min Pool Size
une valeur appropriée. Cette valeur
permet d’améliorer la performance de
connexion pour une application qui ne
tourne pas souvent mais qui ne peut
pas attendre que le .NET Data Provider
construise un nouvel objet SqlConnection
et établisse une connexion.
Vous pouvez aussi par ce moyen réserver
des connexions. Par exemple, vous
pourriez définir une valeur Min Pool
Size si vous vouliez que votre application
Internet puisse traiter une avalanche
de requêtes qui s’emparent de
toutes les connexions du pool, tout en
étant sûr d’avoir une connexion privée.
Autre hypothèse : vous hébergez plusieurs
applications sur le même serveur
et l’une d’elles est bombardée de
requêtes ; grâce à  cette technique,
vous pouvez réserver certaines
connexions pour chaque application.
Après que vous ayez fermé une
connexion en code, ADO.NET ordonne
au connection pooler de restituer
la connexion au pool et, après un
certain délai (entre 4 et 8 minutes),
une routine connection pool ferme la
connexion base de données. Le motclé
Connection Lifetime ConnectionString
n’est pas ce qu’il semble
être. Microsoft a inclus cette option
pour répondre à  une circonstance très
spéciale : l’utilisation de serveurs en cluster. Connection Lifetime aide à  libérer
des connexions plus rapidement
quand plusieurs SQL Servers travaillent
dans un cluster. Dans des
systèmes non clustered, l’argument
n’a pas d’influence sur la durée de présence
de la connexion dans le pool.
Je l’ai dit, généralement le mécanisme
connection-pool utilise une durée
de connexion aléatoire comprise
entre 4 et 8 minutes. Une fois que vous
avez fermé l’objet ADO.NET Connection,
les connexions restent ouvertes
pendant la période choisie aléatoirement
après que votre application les libère.
Le .NET Data Provider calcule la
durée de vie du pool en commençant
par le moment où la connexion poolée
a été créée.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010