Contatori delle prestazioni di ASP.NET
Aggiornamento: novembre 2007
In ASP.NET sono supportati due gruppi di contatori delle prestazioni: di sistema e di applicazione. I contatori delle prestazioni del sistema vengono esposti nel Windows Performance Monitor come oggetto contatore delle prestazioni ASP.NET. I contatori delle prestazioni dell'applicazione vengono esposti come oggetto prestazioni delle Applicazioni ASP.NET.
Nota: |
---|
Il valore associato a ciascun contatore delle prestazioni viene aggiornato ogni 400 millisecondi. Quando si crea un'applicazione di monitoraggio, si tenga conto di tale intervallo, così da essere certi che il codice non utilizzi un contatore obsoleto. Per ulteriori informazioni, vedere Utilizzo di componenti di monitoraggio del sistema. |
Per ulteriori informazioni sui contatori delle prestazioni dell'applicazione e del sistema, vedere Procedura: creare categorie di contatori delle prestazioni, Gestione di categorie e contatori e Procedura: creare contatori delle prestazioni personalizzati.
Quando si effettua il monitoraggio delle applicazioni Web ASP.NET, è possibile tenere traccia dei contatori delle prestazioni elencati nella tabella riportata di seguito.
Oggetto prestazioni |
Contatore prestazioni |
---|---|
ASP.NET |
Riavvii dell'applicazione |
ASP.NET |
Richieste in coda |
ASP.NET |
Riavvii processo di lavoro |
Applicazioni ASP.NET |
Totale errori |
Applicazioni ASP.NET |
Richieste/sec |
Processore |
% Tempo processore
Nota:
Uno scarso utilizzo della CPU o l'impossibilità di sfruttare al massimo la CPU indipendentemente dal carico posto dai client può indicare la presenza di un conflitto per una risorsa o un blocco nell'applicazione Web.
|
È inoltre possibile utilizzare i contatori delle prestazioni riportati di seguito nell'analisi di problemi relativi alle prestazioni dell'applicazione Web.
Oggetto prestazioni |
Contatore prestazioni |
---|---|
Applicazioni ASP.NET |
Istanze pipeline |
Eccezioni CLR .NET |
Eccezioni |
Sistema |
Scambi contesto/sec |
Il contatore Eccezioni visualizza il numero di eccezioni generate in un'applicazione, per le ripercussioni che queste possono avere sulle prestazioni. In alcuni percorsi di codice, tuttavia, le eccezioni rientrano nel funzionamento ordinario. Il metodo Redirect dell'oggetto Response genera, ad esempio, l'eccezione ThreadAbortException che non è possibile intercettare. Si consiglia pertanto di tenere traccia di questo valore insieme al contatore Totale errori per verificare se all'eccezione segue un errore dell'applicazione.
Il contatore Scambi contesto/sec consente di misurare con che frequenza i contesti dei thread vengono scambiati dall'insieme delle CPU del computer server Web. Un valore elevato indica solitamente un elevato conflitto nei blocchi o un eccesso di passaggi dei thread tra modalità utente e modalità kernel. In questo caso, è consigliabile effettuare ulteriori controlli utilizzando i profiler per il campionamento e altri strumenti.
Contatori delle prestazioni di sistema ASP.NET
ASP.NET supporta i contatori delle prestazioni del sistema ASP.NET elencati nella tabella che segue. Tali contatori aggregano le informazioni relative a tutte le applicazioni ASP.NET su un computer server Web.
Nota: |
---|
Esiste un'importante differenza tra i contatori Sessioni server di stato presenti nell'oggetto prestazioni ASP.NET, che si riferiscono solo al computer server su cui viene eseguito il server di stato, e i contatori Sessioni presenti nell'oggetto prestazioni Applicazioni ASP.NET, che si riferiscono solo alle sessioni utente che si aprono nel processo. |
Riavvii dell'applicazione
Il numero di volte che un'applicazione viene riavviata per tutta la durata del server Web. I riavvii dell'applicazione vengono incrementati ogni volta che viene generato un evento Application_OnEnd. Un'applicazione può essere riavviata quando vengono apportate modifiche al file Web.config, agli assembly memorizzati nella relativa directory Bin oppure quando è necessario ricompilarla a causa delle numerose modifiche apportate alle pagine Web ASP.NET. Un inatteso incremento del valore di questo contatore può essere indice di problemi che comportano il riciclo dell'applicazione Web. In questi casi è necessario compiere ulteriori verifiche appena possibile.Nota: Questo valore viene reimpostato su zero ogni volta che viene riavviato l'host di Internet Information Services (IIS).
Applicazioni in esecuzione
Il numero di applicazioni contemporaneamente in esecuzione sul server.Richieste disconnesse
Il numero di richieste disconnesse a causa di un errore di comunicazione.Richieste in coda
Il numero di richieste in attesa di elaborazione dalla coda. Quando questo valore inizia a crescere proporzionalmente all'incremento del carico del client, è stato raggiunto il limite di richieste che il computer server Web può gestire in contemporanea. Il valore massimo predefinito di questo contatore è 5.000. È possibile modificare questa impostazione nel file Machine.config.Richieste respinte
Il numero totale di richieste non eseguite per insufficienza di risorse server per l'elaborazione. Questo contatore rappresenta il numero di richieste che restituiscono il codice di stato HTTP 503 che indica che il server è troppo occupato.Tempo di attesa richiesta
Il numero di millisecondi di attesa nella coda per l'elaborazione della richiesta più recente.Totale connessioni al server dello stato della sessione
Il numero totale di connessioni dello stato della sessione al computer su cui sono memorizzati dati di stato della sessione out-of-process. Per ulteriori informazioni, vedere Modalità stato sessione.Totale connessioni al database SQL Server della sessione
Il numero totale di connessioni dello stato della sessione al database Microsoft SQL Server in cui sono memorizzati dati dello stato della sessione. Per ulteriori informazioni, vedere Modalità stato sessione.Sessioni server abbandonate
Il numero di sessioni utente abbandonate in modo esplicito. Queste sessioni vengono terminate mediante azioni utente specifiche, quale la chiusura del browser o l'esplorazione di un altro sito. Questo contatore è disponibile solo sul computer su cui viene eseguito il servizio server di stato (aspnet_state).Sessioni server attive
Il numero di sessioni server correntemente attive. Questo contatore è disponibile solo sul computer su cui viene eseguito il servizio server di stato (aspnet_state).Sessioni server chiuse per timeout
Il numero di sessioni utente divenute inattive a causa dell'inattività dell'utente. Questo contatore è disponibile solo sul computer su cui viene eseguito il servizio server di stato (aspnet_state).Totale sessioni server
Il numero di sessioni create per tutta la durata dell'elaborazione. Questo contatore rappresenta l'insieme dei valori di Sessioni server attive, Sessioni server abbandonate e Sessioni server chiuse per timeout ed è disponibile solo sul computer su cui viene eseguito il servizio server di stato (aspnet_state).Riavvii processo di lavoro
Il numero di volte che un processo di lavoro è stato riavviato sul server. È possibile riavviare un processo di lavoro quando presenta un errore imprevisto o quando viene intenzionalmente riciclato. Se il valore del contatore aumenta in modo imprevisto, si consiglia di effettuare ulteriori controlli non appena possibile.Processi di lavoro in esecuzione
Il numero di processi di lavoro in esecuzione sul server.
Contatori delle prestazioni di Applicazioni ASP.NET
ASP.NET supporta i contatori delle prestazioni dell'applicazione elencati nella tabella che segue. Tali contatori consentono di monitorare le prestazioni di una singola istanza di un'applicazione ASP.NET e dispongono di un'istanza univoca denominata __Total__. Analogamente ai contatori globali descritti in precedenza in questo argomento, questa istanza aggrega i contatori relativi a tutte le applicazioni su un server Web. L'istanza __Total__ è sempre disponibile. Se sul server non è in esecuzione alcuna applicazione, sui contatori verrà visualizzato il valore zero.
Richieste anonime
Il numero di richieste che utilizzano l'autenticazione anonima.Richieste anonime/sec
Il numero di richieste per secondo che utilizzano l'autenticazione anonima.Totale oggetti cache
Il numero totale di oggetti nella cache. Questo contatore include sia l'utilizzo della cache da parte della struttura delle pagine ASP.NET che quello della cache dell'applicazione mediante le API della cache.Totale richieste soddisfatte dalla cache
Il numero totale di richieste soddisfatte dalla cache. Questo contatore include sia l'utilizzo della cache da parte della struttura delle pagine ASP.NET che quello della cache dell'applicazione mediante le API della cache.Totale richieste non soddisfatte dalla cache
Il numero di richieste non soddisfatte dalla cache per ogni applicazione. Questo contatore include sia l'utilizzo della cache da parte della struttura delle pagine ASP.NET che quello della cache dell'applicazione mediante le API della cache.Percentuale complessiva richieste soddisfatte dalla cache
La percentuale di richieste soddisfatte e richieste non soddisfatte dalla cache. Questo contatore include sia l'utilizzo della cache da parte della struttura delle pagine ASP.NET che quello della cache dell'applicazione mediante le API della cache.Tasso di ricambio complessivo della cache
Il numero di aggiunte e rimozioni alla cache al secondo, che consente di determinare l'efficacia con cui viene utilizzata la cache. Se il tasso di ricambio è alto, la cache non viene utilizzata in modo efficiente.Oggetti API nella cache
Il numero totale di oggetti nella cache dell'applicazione.Richieste API soddisfatte dalla cache
Il numero totale di richieste soddisfatte dalla cache quando l'accesso viene eseguito solo tramite le API della cache esterna. Questo contatore non tiene traccia dell'utilizzo della cache da parte della struttura delle pagine ASP.NET.Richieste API non soddisfatte dalla cache
Il numero totale di richieste non soddisfatte dalla cache quando l'accesso viene eseguito tramite le API della cache esterna. Questo contatore non tiene traccia dell'utilizzo della cache da parte della struttura delle pagine ASP.NET.Percentuale richieste API soddisfatte dalla cache
Il rapporto tra richieste soddisfatte e non soddisfatte dalla cache quando l'accesso viene eseguito tramite le API della cache esterna. Questo contatore non tiene traccia dell'utilizzo della cache da parte della struttura delle pagine ASP.NET.Tasso di ricambio degli oggetti API nella cache
Il numero di aggiunte e rimozioni eseguite nella cache al secondo quando la cache viene utilizzata mediante le API esterne (escluso l'utilizzo tramite il framework di pagina ASP.NET). È utile per determinare l'efficacia con cui viene utilizzata la cache. Se il tasso di ricambio è alto, la cache non viene utilizzata in modo efficiente.Totale compilazioni
Il numero totale delle compilazioni eseguite per tutta la durata del processo corrente del server Web. La compilazione viene eseguita quando un file con estensione aspx, asmx, ascx o ashx oppure un file di origine code-behind viene compilato in modo dinamico nel server.Inizialmente questo numero salirà fino a un valore di picco poiché le richieste verranno effettuate a tutte le parti di un'applicazione. Una volta eseguita la compilazione, tuttavia, l'output compilato risultante verrà salvato su disco per essere riutilizzato finché non verrà modificato il relativo file di origine. Pertanto, anche in caso di riavvio di un processo, il contatore può rimanere su zero (inattivo) finché l'applicazione non viene modificata o ridistribuita.
Richieste di debug
Il numero di richieste ricevute mentre il debug è attivo.Errori di pre-elaborazione
Il numero di errori verificatisi durante l'analisi, escludendo gli errori di compilazione e quelli di runtime.Errori di compilazione
Il numero di errori verificatisi durante la compilazione dinamica, escludendo gli errori del parser e quelli di runtime.Errori di esecuzione
Il numero totale di errori che si sono verificati durante l'esecuzione di una richiesta HTTP, escludendo gli errori del parser e quelli di compilazione.Errori non gestiti durante l'esecuzione
Il numero totale di errori non gestiti che si sono verificati durante l'esecuzione delle richieste HTTP. Si definisce errore non gestito un'eccezione che si verifica in fase di esecuzione e che, non essendo intercettata dal codice utente, accede alla logica interna di gestione degli errori di ASP.NET. Le eccezioni a questa regola si verificano quando:Sono attivati gli errori personalizzati, viene definita una pagina di errore o si verificano entrambe le situazioni.
L'evento Page_Error è definito nel codice utente e l'errore viene cancellato mediante il metodo ClearError o viene eseguito un reindirizzamento.
Errori non gestiti durante l'esecuzione/sec
Il numero di eccezioni non gestite al secondo che si sono verificate durante l'esecuzione delle richieste HTTP.Totale errori
Il numero totale di errori che si sono verificati durante l'esecuzione delle richieste HTTP, includendo gli errori del parser, di compilazione e di runtime. Questo contatore rappresenta la somma dei contatori Errori di compilazione, Errori di pre-elaborazione ed Errori di esecuzione. Di norma, in un server Web correttamente funzionante non vengono generati errori. Il verificarsi di errori in un'applicazione Web ASP.NET può falsare tutti i valori relativi alle velocità di trasferimento, perché i percorsi che il codice seguirà per provvedere al recupero degli errori saranno radicalmente diversi da quelli ordinari. Prima di effettuare l'analisi delle prestazioni, eseguire il debug dell'applicazione.Totale errori/sec
Il numero di errori al secondo che si sono verificati durante l'esecuzione delle richieste HTTP, includendo gli errori del parser, di compilazione e di runtime.Oggetti cache di output
Il numero totale di oggetti nella cache di output.Richieste soddisfatte dalla cache di output
Il numero totale di richieste gestite dalla cache di output.Richieste non soddisfatte dalla cache di output
Il numero di richieste non soddisfatte dalla cache di output per ogni applicazione.Percentuale richieste soddisfatte dalla cache di output
La percentuale delle richieste totali gestite dalla cache di output.Tasso di ricambio della cache di output
Il numero di aggiunte e rimozioni eseguite nella cache di output al secondo. Se il tasso di ricambio è alto, la cache non viene utilizzata in modo efficiente.Istanze pipeline
Il numero di istanze della pipeline di richieste attive per l'applicazione ASP.NET specificata. Poiché all'interno di un'istanza pipeline può essere eseguito un solo thread di esecuzione, questo valore indica il numero massimo di richieste contemporanee correntemente elaborate da una data applicazione. In condizioni di carico, un basso valore di questo contatore indica solitamente un corretto utilizzo della CPU.Totale byte richieste
La dimensione totale, in byte, di tutte le richieste.Totale byte richieste di output
La dimensione totale, in byte, di tutte le risposte inviate a un client. Non sono incluse le intestazioni di risposta HTTP.Richieste in esecuzione
Il numero di richieste correntemente in esecuzione.Richieste non soddisfatte
Il numero totale di richieste non soddisfatte. Tutti i codici di stato maggiori o uguali a 400 comportano l'incremento di questo contatore.Le richieste che provocano un codice di stato 401 comportano l'incremento di questo contatore e del contatore Richieste non autorizzate. Le richieste che provocano un codice di stato 404 o 414 comportano l'incremento di questo contatore e del contatore Richieste non trovate. Le richieste che provocano un codice di stato 500 comportano l'incremento di questo contatore e del contatore Richieste non soddisfatte per timeout.
Richieste non trovate
Il numero di richieste non soddisfatte a causa di risorse non trovate (codice di stato 404 o 414).Richieste non autorizzate
Il numero di richieste non soddisfatte a causa della mancata autorizzazione (codice di stato 401).Richieste soddisfatte
Il numero di richieste soddisfatte (codice di stato 200).Richieste non soddisfatte per timeout
Il numero di richieste non soddisfatte per timeout (codice di stato 500).Totale richieste
Il numero totale di richieste dall'avvio del servizio.Richieste/sec
Il numero di richieste eseguite al secondo. Rappresenta la velocità di trasferimento dell'applicazione. In condizioni di carico costante, questo valore dovrebbe restare in un determinato intervallo, fatta eccezione per l'incidenza di altre attività del server, quali garbage collection, thread di pulizia cache, strumenti server esterni e così via.Sessioni attive
Il numero di sessioni correntemente attive. Questo contatore è supportato solo con lo stato della sessione in memoria.Sessioni abbandonate
Il numero di sessioni abbandonate in modo esplicito. Questo contatore è supportato solo con lo stato della sessione in memoria.Sessioni chiuse per timeout
Il numero di sessioni chiuse per timeout. Questo contatore è supportato solo con lo stato della sessione in memoria.Totale sessioni
Il numero totale di sessioni. Questo contatore è supportato solo con lo stato della sessione in memoria.Transazioni annullate
Il numero di transazioni annullate per tutte le applicazioni ASP.NET attive.Transazioni completate
Il numero di transazioni completate per tutte le applicazioni ASP.NET attive.Transazioni in sospeso
Il numero di transazioni in corso per tutte le applicazioni ASP.NET attive.Totale transazioni
Il numero totale di transazioni completate per tutte le applicazioni ASP.NET attive.Transazioni/sec
Il numero di transazioni avviate al secondo per tutte le applicazioni ASP.NET attive.
Vedere anche
Concetti
Cenni preliminari sulle prestazioni
Problemi di prestazioni durante la migrazione da ASP a ASP.NET
Monitoraggio delle prestazioni delle applicazioni ASP.NET