Ado et multi utilisateurs

Résolu
beny1303 Messages postés 12 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 24 avril 2007 - 27 juil. 2006 à 20:34
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 - 29 juil. 2006 à 21:50
Bonjour à tous,

Savez-vous comment fonctionne la connection ADO via ASP.NET dans le cas d'une utilisation multi utilisateurs sur le site ASP.NET.

Je m'explique : si par exemple 15 users sont connectés sur le serveur IIS, combien de connexions sont utilisés sur le serveur sql?
Je me demande aussi ce qui se passe dans le cas où 2 utilisateurs lancent un sqldatareader simultanément? Est-ce que la session sépare complètement les accès?

Merci de votre aide.

ps : En fait on peut résumer en une seule question: comment marchent les accès multi utilsateurs avec sql, ado et asp.net???

4 réponses

cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
28 juil. 2006 à 14:18
salut,


dans ta chaine de connection, il y a une propriété concernant le "Connection pooling".
En gros, tu indiques :
- est-ce que que tu veux utiliser le connection pooling.
- Si c'est non, cela fonctionne comme apacheswiss l'a indiqué, à chaque création d'un object connection, une nouvelle connection est créée.
- Si c'est oui, ado.net va créer un pool de connections (une liste de connection). Tu vas définir combien tu en veux au minimum et combien tu en veux au maximum.
Admettons que je mette 3 (minimum) 10 (maximum).
La première fois que tu crées un objet connection, 3 connections sont ouvertes et mises dans le pool.
Lorsque tu fermes une connection (.close), la connection n'est pas fermée, mais remise à disposition dans le pool.
Lorsque tu fais une demande de création de connection, et que le min est passé (3), il en ouvre une 4ème (une fois que tu fais .close, elle retourne dans le pool et reste donc ouverte).
Lorsque tu fais une demande de création de connection et que le pool possède déjà 10 connections et qu'elles sont toutes utilisées, ado.net va attendre qu'une connection du pool se libère (ou lance une exception, selon ton code).

Donc si 15 utilisateurs se connectent EXACTEMENT en même temps, dans mon example il n'y aura pas assez de connections ouvertes (un max de 10).
Le truc, c'est qu'à moins que ton application soit utilisée par une centaine de personnes (en même temps), tu n'auras jamais besoin d'autant de connections dans le pool (10 c'est déjà beaucoup, il ne faut pas perdre de vue que la connection n'est utilisée que le temps de l'exécution des requêtes, .close les remets à disposition).

De plus, il faut également savoir que SQL Server possède également ses propres paramètres (pool interne,  nombre maximum de connections possible pour un client, ...).
Mais les paramètres par défaut te permettent d'utiliser le connection pooling.

bref, il faudra toute une journée pour parler de ce sujet...
je te recommande de checker sur google "ado.net connection pooling".

a+
yopyop
3
apacheswiss Messages postés 154 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 août 2007
27 juil. 2006 à 23:06
que ce soit avec ado où Oledb... Chaque fois que tu crée un object connection, tu ouvre une nouvelle connection au ServerSQL.
avec un identifiant géré par l'object..

et comme a chaque fois qu'un utilisateur se connecte sur ta page, il crée un nouvel objet ado..
donc une connection différente..

le seul problème qu'il peut y avoir, c'est si quelqu'un veut modifié un enregistrement que quelqu'un autre delete juste avant lui..
ou des problèmes du genre (intégrité des donée).
0
beny1303 Messages postés 12 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 24 avril 2007
28 juil. 2006 à 19:57
Salut

Je suis impresionné par la réponse. Merci beaucoup.
En fait il est effectivement possible que 100 utilisateurs utilisent l'appli. Cela dit je ne sais pas combien simultanement.
D'après ton message je pense revoir toute ma classe qui concerne ADO. Je vais ouvrir la connexion pour chaque action et la refermer ensuite.
Pour l'instant, je l'ouvre au session start (dans global.asax) et je la ferme au session end.

En tout cas bravo et merci pour la réponse

Benjamin
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
29 juil. 2006 à 21:50
de rien (et erci pour les compliments )

renseignes toi bien sur le web, il y a des tonnes d'articles intéressant.

yopyop
0
Rejoignez-nous