Contatori delle prestazioni di ASP.NET

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

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

Sviluppo di applicazioni ASP.NET a elevate prestazioni
Ottimizzazione delle prestazioni in ASP.NET
Monitoraggio delle prestazioni delle applicazioni ASP.NET

Altre risorse

Memorizzazione nella cache ASP.NET