92 messaggi dal 30 luglio 2003
www.athesiasnc.it
Buon giorno,
utilizzo VS 2005 express e sul server del mio provider ciclamente si ha il seguente errore:






Server Error in '/' Application.


--------------------------------------------------------------------------------

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.



Stack Trace:

[InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.]
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +1184329
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +105
System.Data.SqlClient.SqlConnection.Open() +111
System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +84
System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +197
System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider.GetConnectionHolder() +16
System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider.LoadPersonalizationBlobs(WebPartManager webPartManager, String path, String userName, Byte[]& sharedDataBlob, Byte[]& userDataBlob) +195
System.Web.UI.WebControls.WebParts.PersonalizationProvider.LoadPersonalizationState(WebPartManager webPartManager, Boolean ignoreCurrentUser) +95
System.Web.UI.WebControls.WebParts.WebPartPersonalization.Load() +105
System.Web.UI.WebControls.WebParts.WebPartManager.OnInit(EventArgs e) +497
System.Web.UI.Control.InitRecursive(Control namingContainer) +321
System.Web.UI.Control.InitRecursive(Control namingContainer) +198
System.Web.UI.Control.InitRecursive(Control namingContainer) +198
System.Web.UI.Control.InitRecursive(Control namingContainer) +198
System.Web.UI.Control.InitRecursive(Control namingContainer) +198
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +692






Ho più volte segnalato l'errore ed oggi mi è arrivata la seguente risposta:
c'è qualcosa che non va, dopo il tuo avviso abbiamo messo il riciclo del pool ogni due ore.

Questo non basta, e ti spiego il perchè.

Guardando i processi allocati in memoria notiamo che il tuo attualmente occupa 150 mb e che ha un'incremento di 2 mb al minuto.

Ti preghiamo ti controllare bene la tua applicazione (query, connessioni, sessioni, ...), anche perchè con tutto lo spazio che occupa rischiamo di compromettere la macchina per voi e tutti gli altri clienti che "alloggiano" su questa (e abbiamo già ricevuto diverse lamentele).

Da parte nostra non possiamo fare altro, ti chiediamo gentilmente di riguardare l'applicazione.

Buon Lavoro.




A me sembra molto strano la cosa,perchè se fosse problema della procedura il problema dovrebbe presentarsi sempre invece avviene specialmente quando faccio degli aggiornamenti sul server'
Ogni idea e/o suggerimenti sono beni accetti.
Anche perchè non so cosa fare.
Grazie
Marisa
Ciao,

questo errore si verifica quando tutte le "pooled connection" sono in uso e la grandezza massima del pool è stata raggiunta (per default 100). La connessione, se non chiusa, verrà liberata dal garbage collector, che come ben sai non puoi invocare e talvolta possono passare delle ore prima che svolga il suo lavoro.

Tieni presente che sql server alloca 1,5 mb per ogni nuova connessione aperta.

Controlla di chiudere sempre le connessione,il prima possibile.

Se usi C# ti consiglio caldamente di usare la seguente sintassi con tutti gli oggetti che implementean IDisposable:
 using (SqlConnection conn = new SqlConnection(myConnectionString))

      {

            conn.Open();

            doSomething(conn);

      }
Tramite using utilizzi una sorta di shortcut dove istruisci la chiusura e il dispose dell'oggetto (in questo caso SqlConnection). Non ti devi quindi "preoccupare" di chiudere esplicitamente l'oggetto.

Buon lavoro,

Fabrizio Canevali
92 messaggi dal 30 luglio 2003
www.athesiasnc.it
Utilizzo VB, però se mi spieghi un pò meglio posso provare a scrivere del codice.
Ti ringrazio
Marisa
Ciao,

come dicevo la sintassi sopra esposta è una prerogativa (comoda) di C#.

Con VB devi semplicemente accertardi di chiudere SEMPRE la connessione:
conn.Open()
doSomething()
conn.Close()
conn.Dispose()

Ma ce di più. Supponi che:

conn.Open();
doSomething() // in doSomething() viene generata un eccezzione
conn.Close()
conn.Dispose();

NON accedo a conn.Close e conn.Dispose()

quindi se sei assolutamente certa di non aspettarti eccezzioni usa le prima sintassi altrimenti metti tutto in un blocco try catch finally dove:
Finnaly
conn.Close()
conn.Dispose()
In questo modo accedi sempre a Finnaly e chiudi sempre la connessione con dispose dell'oggetto.

Fabrizio Canevali
fabrica wrote:
come dicevo la sintassi sopra esposta è una prerogativa (comoda) di C#.

VB 2005, quello che si trova con il .NET Framework 2.0 (e quindi con ASP.NET 2.0) ha una sintassi simile, che usa proprio lo using.
la sua sintassi è all'incirca

Using (...)
' istruzioni
End Using

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
Daniele Bochicchio ha scritto:
VB 2005, quello che si trova con il .NET Framework 2.0 (e quindi con ASP.NET 2.0) ha una sintassi simile, che usa proprio lo using.
la sua sintassi è all'incirca

Using (...)
' istruzioni
End Using


Ciao Daniele, la mia nota idiosincrasia verso VB mi ha fatto perdere questa chicca. Prendo nota  .

Fabrizio Canevali
fabrica wrote:
Ciao Daniele, la mia nota idiosincrasia verso VB mi ha fatto perdere questa chicca. Prendo nota  .

abbè, non è che io lo utilizzi chissà quanto nella vita reale (ma poi lo devo fare per i corsi, quindi di fatto cmq ancora un po' me ne interesso, diciamo così...  )

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.