67 messaggi dal 18 agosto 2006
Contributi
La questione è la seguente:

Ho un applicativo asp.net 2.0 che gira sotto una dir virtuale in IIS6.0 (impostato di default in modalità isolamento di processo), tale applicativo utilizza l'application pool di default.

Ho voluto provare ad aumentare (dal valore standard di 1) per il default application Pool il numero di processi relativi al Web Garden nell'apposita scheda delle proprietà dell'appool in iis, ponendo a 10 il numero di processi.

Si sono verificati vari problemi di utilizzo dell'applicativo in questione, ad es. sporadiche apparizioni della tipica "errore - impossibile trovare la pagina " a seguito di normali operazioni correttamente svolte dall'applicativo stesso con il valore unitario dei processi del web garden.

Qualcuno sà spiegarmi perchè potrebbero verificarsi tali effetti ??
Quando aumenti i processi nella textbox del "Web Garden" vengono creati n processi w3wp.exe che elaboreranno le tue richieste. Questi processi hanno lo svantaggio di essere pressocché indipendenti; per esempio, non vengono condivise le session (quelle tradizionali), gli oggetti application, cache e gli oggetti statici.

Da questa premessa puoi immagine che cosa può accadere nelle applicazioni che utilizzano massicciamente le Session o gestiscono sezioni del sito in modo simile.

Sinceramente non mi spiego il problema che hai segnalato perché la comparsa di pagina non trovata è segno di un problema grave - ma usi quale gestore particolare per gli url? Non sono un esperto in materia (un amministratore di server potrà darti maggiori info), ma 10 processi a me sembrano effettivamente troppi: forse la macchina non è in grado di crearli, forse la loro gestione/creazione è lenta e provoca l'errore che ti è capitato (le mie sono solo supposizioni).

Ciao

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6
67 messaggi dal 18 agosto 2006
Contributi
Non uso gestori particolari per gli url, e dal task manager ho verificato che i 10 processi vengono correttamente caricati con un impegno della memoria fisica di circa il 60% di quella totale, penso che ciò non dovrebbe causare problemi di sorta.

Quando aumenti i processi nella textbox del "Web Garden" vengono creati n processi w3wp.exe che elaboreranno le tue richieste. Questi processi hanno lo svantaggio di essere pressocché indipendenti; per esempio, non vengono condivise le session (quelle tradizionali), gli oggetti application, cache e gli oggetti statici.


Grazie.
Penso che la risposta stia proprio qua.
Nella mia applicazione i vari controlli e usercontrol contenuti nelle pagine usano la session e application per rintracciare i dati comuni a tutta l'applicazione che indicano lo stato attuale per certi valori di riferimento modificabili dall'utente.
Inoltre uso dei metodi contenuti in una classe statica per effettuare il caricamento dei dati dal db sql.

Quindi , usando la session,Application o classi statiche non è possibile usare il web garden??
dbagnai wrote:
Quindi , usando la session,Application o classi statiche non è possibile usare il web garden??

Le session sì, già nativamente sono disponibili dei metodi alternative per la loro memorizzazione. Guarda la sezione "sessionState" nel web.config. In mode puoi scegliere tra questi valori:
Off
InProc (default)
StateServer
SqlServer

Nel modo SqlServer le session vengono memorizzate in una tabella apposita in un database sqlserver (tabelle che si creano con un tool apposito presente nella directory del framework), oppure con lo stateserver viene avviato un servizio utilizzabile da tutte le macchine e processi. In quest'ultimo caso, devi avere tra le mani il server per la corretta configurazione.
Le application e la cache non è condivisibile.

Ciao

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6
andrewz [MVP] [Staff] wrote:
Le application e la cache non è condivisibile.

per la cache (application alla fine è lo stesso) esistono dei prodotti appositi per sincronizzare.
personalmente trovo ScaleOut non male:
http://www.scaleoutsoftware.com/
hanno anche un prodotto apposito per la Session, molto più performante in questi scenari delle altre scelte.
ce ne sono anche altri free ed a costi inferiori, basta cercare con google.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
67 messaggi dal 18 agosto 2006
Contributi
Ok very thanks...

Fammi capire bene utilizzando un prodotto (ed es. scaleout stateserver)
è possibile rendere Cache e Application gestibili in una config web garden?

Per fare ciò mi immagino che anzichè le suddette Cache e Application vada modificato il codice dell'applicativo per utilizzare il prodotto apposito (es. scaleout) , oppure ciò non è necessario?

Mentre per session server basta combiare il web.config mi pare di capire.



Ultima questione , per usare il web garden mi pare di capire che l'utilizzo della classe static per l'accesso al db non vada bene?


db
Modificato da dbagnai il 10 gennaio 2008 14.34 -
dbagnai wrote:
è possibile rendere Cache e Application gestibili in una config web garden?

ScaleOut lavora su più server, esiste anche la versione su GeoServer. fai un po' tu

Per fare ciò mi immagino che anzichè le suddette Cache e Application vada modificato il codice dell'applicativo per utilizzare il prodotto apposito (es. scaleout) , oppure ciò non è necessario?

Application di fatto è Cache senza scadenza, quindi lo sostuisci del tutto, visto che ci sei.
sì, hanno una API apposita, che puoi mappare con una classe su quella del ..NET Framework perchè abbia gli stessi metodi, così che anzichè avere Cache.Insert, userai tipo SOSSCache.Insert, o come chiamerai la tua classe. non è tanto complesso da fare.

Mentre per session server basta combiare il web.config mi pare di capire.

sì, perchè session supporta il provider model e quindi può essere sfruttare a provider. tra l'altro per session c'è anche un sistema di Andrea Zani che potrebbe fare al caso tuo, perchè scrive su disco e quindi è multi-processo, ma non credo che AZ l'abbia portato sotto il provider model.
Ultima questione , per usare il web garden mi pare di capire che l'utilizzo della classe static per l'accesso al db non vada bene?

va bene, anche perchè ha metodi statici. e comunque, avresti una classe statica per ognuno dei processi, cosa che nella maggior parte dei casi non è assolutamente un problema.
ASPItalia.com e derivati girano così, all'incirca

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it

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.