web-dev-qa-db-fra.com

Délai de connexion et vie de connexion

Quel est l'avantage et l'inconvénient du délai de connexion = 0?

Et quelle est l'utilisation de la connexion de la connexion = 0?

par exemple

(Database=TestDB;
 port=3306;
 Uid=usernameID;
 Pwd=myPassword;
 Server=192.168.10.1;
 Pooling=false;
 Connection Lifetime=0;
 Connection Timeout=0)

et quelle est l'utilisation de la mise en commun de la connexion?

18
Mark

Délai d'attente est combien de temps vous attendez une réponse à une demande avant de vous abandonner. TimeOut = 0 signifie que vous garder en attente pour la connexion se produit toujours. Bon je suppose que si vous êtes connecté à un serveur vraiment lent qu'il est normal s'il faut 12 heures pour répondre :-). En général, une mauvaise chose. Vous voulez mettre une sorte de délai raisonnable à la demande, afin que vous puissiez réaliser votre cible est en baisse et de passer avec votre vie.

durée de vie de connexion = combien de temps une vie de connexion avant qu'il ne soit tué et recréés. Une durée de vie de 0 signifie ne jamais tuer et recréez. Normalement pas une mauvaise chose, parce que tuer et de recréer une connexion est lente. Grâce à divers bugs vos connexions peuvent se coincer dans un état instable (comme quand traiter les transactions étranges 3 façon) .. mais 99% du temps, il est bon de garder la vie de connexion infinie.

mise en commun de connexion est une façon de traiter le fait que la création d'une connexion est très lente. Ainsi, plutôt que de faire une nouvelle connexion pour chaque demande, ont à la place une piscine de dire, 10, les connexions déjà créés. Lorsque vous en avez besoin, vous empruntez un, utilisez, et le retour. Vous pouvez ajuster la taille de la piscine pour changer la façon dont votre application se comporte de. Plus grande piscine = plus de connexions = plus de fils faire des choses à la fois, mais cela pourrait aussi submerger tout ce que vous faites.

En résumé:
ConnectionTimeout = est mauvais, faire quelque chose de raisonnable comme 30 secondes.
ConnectionLifetime = est correct
ConnectionPooling = désactivé est mauvais, vous voudrez probablement l'utiliser.

30
bwawok

Je sais que c'est un vieux fil, mais je pense qu'il est important de signaler une instance dans laquelle vous voudrez peut-être désactiver la mise en commun de la connexion ou utiliser la durée de vie de la connexion.

Dans certains environnements (surtout lors de l'utilisation d'Oracle, ou du moins dans mon expérience), l'application Web est conçue de sorte qu'elle se connecte à la base de données à l'aide des informations d'identification de l'utilisateur VS une chaîne de connexion fixe située dans le fichier de configuration du serveur. Dans ce cas, l'activation de la mise en commun de la connexion provoquera la création d'un pool de connexion pour chaque utilisateur accédant au site Web (voir fragmentation de la piscine ). Selon le scénario, cela pourrait être bon ou mauvais.

Cependant, La mise en commun de la connexion devient un problème Lorsque le serveur de base de données est configuré pour tuer des connexions de base de données dépassant une durée de fonctionnement maximale en raison du fait que le serveur de base de données pourrait Tuer des connexions pouvant toujours résider dans le pool de connexion. Dans ce scénario, la durée de vie de la connexion peut être utile pour jeter ces connexions car elles ont été fermées par le serveur.

9
Ulises