Argomento molto interessante, mi occupo di web-application da molto tempo e questo problema è sempre ricorrente. L’aumentare del numero di utenti che visitano un sito web è direttamente proporzionale all’attenzione che si deve porre nei confronti dei vari meccanismi che si occupano di far interagire ui e database. Per rendere questo “collegamento” performante si può utilizzare il Connection Pooling.
Il connection pooling è una cache delle connessioni mantenute dal database, queste rimangono in memoria per un determinato periodo di tempo T, durante il quale il db, per richieste esterne, può erogare ottenendo cosi un servizio più veloce.
Il concetto è semplice, il server di database non chiude subito le connessioni al db, al contrario le lascia aperte in attesa che qualcuno possa richiederle. Come si attiva questo meccanismo? Basta modificare attentamente la connection string all’interno del web.config della nostra applicazionie come nel seguente esempio:
<configuration>
<connectionStrings>
<add name="Connessione"
ConnectionString="Server=localhost;Integrated Security=SSPI;Pooling=true;Min Pool Size=1; Max Pool Size=10" />
</connectionStrings>
</configuration>
Sostanzialmente sono stati inseriti tre parametri all’interno della connessione:
- Min Pool Size: numero minimo di connessioni su cui applicare il pooling (quindi cache e riutilizzo);
- Max Pool Size: numero massimo di connessioni su cui applicare il pooling;
- Pooling: con questa proprietà stiamo attivando il meccanismo di pool per la ConnectionString;
Attenzione, Min Pool Size e Max Pool Size, hanno importanza assoluta. Questi due valori vanno impostati dopo un attento studio in quanto determinano proprio l’aumentare o meno delle performance del server sql, se configurati male possono creare più rallentamenti che benefici. Se per esempio ho un’applicazione web in cui sò per certo che avrò un numero di connessioni minime simultanee di 10 persone, logicamente imposterò il mio Min Pool Size = 10.
Spero possa aiutarvi! Enjoy!
Commenti recenti