2011-02-07 6 views
6

Attualmente sto testando un'applicazione ASP.NET. Sto caricando con 500 utenti nell'app, e mentre è in esecuzione sto verificando, in una console perfmon.exe, i contatori "Sessions Actives" e "Sessions Timeout" sul server web.Counter "Sessions Timeout" di ASP.NET (perfmon.exe)

Nel mio web.config, il timeout della sessione è di 3 minuti (a scopo di test).

Così come il test va, il contatore "Sessioni attive" rimane su circa 900 sessioni attive, che presumo sia normale a causa dei 500 utenti attivi e di circa 400 altri le cui sessioni non sono ancora scadute.

Ma quando guardo il contatore "Sessione scaduta", aumenta in modo continuo. Si abbassa gradualmente quando termina il test di carico.

Cos'è esattamente questo contatore? A quanto ho capito, sono le sessioni deprecate che non sono ancora state ripulite (dal garbage collector?) E stanno ancora utilizzando la memoria.

Dato che la nostra applicazione utilizza un enorme ammount della memoria, sto cercando di trovare esattamente dove è che la memoria.

risposta

1

Il contatore sembra indicare ciò che sta accadendo. Ad esempio, mentre le sessioni attive sono avviate, il contatore per attivo va al numero giusto .. e ad un certo punto iniziano a decrescere e attivano il timeout della sessione per aumentare (ovvero le sessioni che vengono espulse sommariamente dall'ASP). Infrastruttura .NET). Non sono sicuro di cosa ti aspetti di vedere. Raccomando di leggere i capitoli, 15, 16 e 17 del libro Improving .NET Application Performance and Scalability. Sono abbastanza illuminanti in questo senso.

+0

In effetti, quello che ho davvero bisogno di sapere è se queste sessioni scadute utilizzano ancora la memoria. Grazie per il link, lo controllerò oggi. – Johnny5

+0

Bene, dopo aver provato un po 'di più, questo timer non va giù fino a quando il pool di applicazioni non viene riavviato (come, iisreset). [Br] Ma sembra che la sessione scaduta non venga ripulita (la memoria non viene liberata) fino a quando il mio loadtest finisce. – Johnny5

+0

Hai qualche contenuto RCW in esecuzione nella sessione? per es. si dispone di oggetti COM legacy accessibili e memorizzati nella sessione? Li ho visti perché il carico si manteneva alto. Sembra anche che potresti voler guardare altri contatori per capire la cosa specifica che sta mangiando la memoria. Ho usato i capitoli che ho menzionato sopra per darmi indicazioni su dove si svolge. Nello specifico, i contatori GC sono di grande aiuto (gen0, gen1 e gen2). – gbvb