Bonjour,

Nous avons un site web qui utilise un sql server 2005 comme sgbd. Nous avons une fréquentation du site très importante. Entre 40 et 50 milles visites jours. Nous recevons régulièrement le message : Le pool de connection a été dépassé (ou équivalent). Nous avons compris que cela venait des pools de connections. Nous avons utilisé la méthode clearpool, mais cela continue. Nous avons aussi essayé la methode clearallpool mais cela saturait le serveur.
Y a t'il une solution à ce problème (du moins en ADO) ?

J'ai fait un programme d'exemple qui reproduit le problème

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Threading;
using System.Diagnostics;
 
namespace ConsoleApplication3
{
    class Program
    {
        static int j=0;
 
            for (int i = 0; i < 10000; i++)
            {
                Thread unThread = new Thread(new ThreadStart(ConnexionBidon));
                unThread.Start();
            }
        }
 
 
 
        static void ConnexionBidon()
        {
            const string CONNECTION = "server=(local);database=DalLinqToSql;password=toto;persist security info=True;user id=sa;packet size=4096";
            SqlConnection uneConnexion = new SqlConnection(CONNECTION);
            uneConnexion.Open();
            j++;
            Random rndEleve = new Random();
            int idEleve;
            idEleve = rndEleve.Next(41367,42366);
            SqlCommand strComm = new SqlCommand("select nom, prenom from eleve where eleve_id=" + idEleve.ToString(), uneConnexion);
            SqlDataReader oReader;
            oReader = strComm.ExecuteReader();
            oReader.Read();
            StringBuilder chaine = new StringBuilder();
            chaine.Append(j.ToString()).Append("   ").Append(oReader["nom"]).Append("   ").Append(oReader["prenom"]);
            Console.WriteLine(chaine.ToString());
            Thread.Sleep(10000);
            uneConnexion.Close();
            SqlConnection.ClearPool(uneConnexion);
        }
 
    }
}
Cela plante au bout d'un moment.
Merci pour votre aide

Vincent