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.
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
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
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