8 messaggi dal 03 novembre 2005
Ciao
in un sito di commercio elettronico sviluppato da diversi anni che non ha dato mai problemi, ora con il numero di utenti che cresce continuamente, il sito va in sofferenza a causa di un eccessivo utilizzo di cpu e memoria da parte di w3wp.exe.
Il sito è sviluppato con vs2005 e framework 2.0.
Grazie per l'aiuto!!!
chiaracat wrote:
Il sito è sviluppato con vs2005 e framework 2.0.

è una richiesta troppo generica. hai fatto correttamente uso di Dispose in Connection/Command/Reader? fai uso di DataSet? componenti particolari che possono fare memory leak?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
8 messaggi dal 03 novembre 2005
ciao
il sito lavora su una connessione unica per singola sessione che viene chiusa (close non dispose) quando non utilizzata.
i datareader sono aperti e distrutti appena finito l'utilizzo, l'uso di dataset è abbastanza pesante perchè memorizza carrelli in dataset e poi li registra in viewstate.

premesso ciò il sito lavora su un application pool dedicata che cresce fino ad a superare 1 gb di memoria utilizzata ( su 2 disponibili) ed imballa il sito nonostante i pochi utenti connessi (max 50)


se limitassi l'application pool ad 1 gb di memoria questo potrebbe essere temporanemante una soluzione accettabile per evitare il blocco del sito?
che ne pensi?

ciao
Chiara


ps
l'applicazione è cookieless, può influenzare la memoria utilizzata?
chiaracat wrote:
il sito lavora su una connessione unica per singola sessione che viene chiusa (close non dispose) quando non utilizzata.

cioè? tieni la connessione aperta per tutta la durata della sessione? usi SqlConnection o qualcos'altro?

i datareader sono aperti e distrutti appena finito l'utilizzo, l'uso di dataset è abbastanza pesante perchè memorizza carrelli in dataset e poi li registra in viewstate.

nel ViewState? e per quale motivo? già di per sè usare i DataSet non è la scelta migliore, mi domando perchè salvarli nel ViewState, mi sfugge davvero.
btw, in scenari del genere (anche se 50 utenti sono pochi per chiamarlo carico) è buona norma realizzare un object model che sia il più snello possibile, e nel caso usare Cache e non ViewState come contenitore del carrello, così da tenerlo attivo per l'utente. lo stesso discorso può essere fatto con Session, ovviamente, non cambia granchè. di sicuro tenere un intero DataSet in memoria, magari con informazioni superflue, non è il massimo.

premesso ciò il sito lavora su un application pool dedicata che cresce fino ad a superare 1 gb di memoria utilizzata ( su 2 disponibili) ed imballa il sito nonostante i pochi utenti connessi (max 50)

1 GB di memoria per un'app con 50 utenti sono una enormità.

se limitassi l'application pool ad 1 gb di memoria questo potrebbe essere temporanemante una soluzione accettabile per evitare il blocco del sito? che ne pensi?

che l'effetto è che arrivato ad un 1 GB viene riciclato. e se hai carrelli in Session, li perdi.

l'applicazione è cookieless, può influenzare la memoria utilizzata?

ammesso che possa farlo, sarebbe molto ma molto marginale rispetto a tutto il resto di cui sopra.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
8 messaggi dal 03 novembre 2005
La connessione viene chiusa dopo ogni utilizzo, uso il viewstate per tenermi i dati in memoria dopo il refresh della pagina.

Comunque a parte ottimizzazioni nella strutturazione del sito il problema di sovraccarico di memoria è iniziato da un giorno all'altro senza un apparente ragione.

Immprovvisamente w3wp accumula l'uso di memoria fino a saturare il sito che non risponde più rendendolo non disponibile.

Dovendo risolvere il problema con una certa urgenza sarebbe disponibile per una consulenza? Grazie
chiaracat wrote:
La connessione viene chiusa dopo ogni utilizzo, uso il viewstate per tenermi i dati in memoria dopo il refresh della pagina.

Comunque a parte ottimizzazioni nella strutturazione del sito il problema di sovraccarico di memoria è iniziato da un giorno all'altro senza un apparente ragione.

probabilmente perchè c'è un carico maggiore. alla volte, se
l'applicazione è strutturata in un certo modo, l'effetto può essere visibili anche con 4-5 utenti in più rispetto al solito.

Dovendo risolvere il problema con una certa urgenza sarebbe disponibile per una consulenza? Grazie

contattami in privato.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
8 messaggi dal 03 novembre 2005
Buongiorno
abbiamo risolto il problema senza però trovare la causa..
abbiamo trovato la pagina che faceva inesorabilmente crescere la memoria.. ne abbiamo fatto una duplica poi l'abbiamo ripulita del codice e dei controlli e infine abbiamo ricopiato il codice e poi i controlli.. ora la memoria cresce ma poi viene rilasciata, la ram utilizzata dal server sta sempre sotto 200 Mb a pieno regime.
Le è mai capitato una cosa del genere?
Abbiamo ricontrollato nell'html ma i codici delle pagine sembrano uguali!!!!!
Grazie
Chiara

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.