Procedura: instrumentare un servizio .NET Framework e raccogliere dati di memoria tramite la riga di comando del profiler
In questo argomento viene illustrato come utilizzare gli strumenti da riga di comando disponibili negli strumenti di profilatura di Visual Studio per instrumentare un servizio di .NET Framework e raccogliere dati sull'utilizzo della memoria.È possibile raccogliere dati sull'allocazione di memoria o sia i dati sull'allocazione di memoria sia quelli sulla durata degli oggetti.
[!NOTA]
Le funzioni di sicurezza avanzate di Windows 8 e Windows Server 2012 hanno richiesto modifiche significative riguardo alla modalità di raccolta dei dati su queste piattaforme da parte del profiler di Visual Studio.Le applicazioni Windows Store richiedono nuove tecniche di raccolta.Vedere Profilatura delle applicazioni Windows 8 e Windows Server 2012.
[!NOTA]
Non è possibile eseguire il profilo di un servizio con il metodo di strumentazione se il servizio non può essere riavviato dopo l'avvio del computer, ad esempio un servizio che viene avviato all'avvio del sistema operativo.
Gli strumenti da riga di comando degli strumenti di profilatura sono contenuti nella sottodirectory \Team Tools\Performance Tools della directory di installazione di Visual Studio.Nei computer a 64 bit gli strumenti sono disponibili nelle versioni a 32 e 64 bit.Per utilizzare gli strumenti da riga di comando del profiler, è necessario aggiungere il percorso degli strumenti alla variabile di ambiente PATH della finestra del prompt dei comandi oppure aggiungerlo al comando stesso.Per ulteriori informazioni, vedere Specifica del percorso degli strumenti da riga di comando degli strumenti di profilatura.
Avvio della sessione di profilo
Per raccogliere dati di prestazioni da un servizio .NET Framework, utilizzare lo strumento VSPerfCLREnv.cmd per inizializzare le variabili di ambiente appropriate e lo strumento VSInstr.exe per creare una copia instrumentata del file binario del servizio.
È necessario riavviare il computer che ospita il servizio per configurarlo per il profilo.È inoltre necessario avviare manualmente il servizio da Gestione controllo servizi.Avviare il profiler, quindi avviare il servizio .NET Framework.
Quando viene eseguito il componente instrumentato, i dati di memoria vengono raccolti automaticamente in un file di dati.È possibile sospendere e riprendere la raccolta dei dati durante la sessione di profilo.
Per terminare una sessione di profilo, chiudere il servizio e arrestare in modo esplicito il profiler.Nella maggior parte dei casi, è consigliabile cancellare le variabili di ambiente di profilo alla fine di una sessione.
Per avviare il profilo di un servizio .NET Framework
Aprire una finestra del prompt dei comandi.
Utilizzare lo strumento VSInstr per generare una versione instrumentata del file binario del servizio.
Utilizzare Gestione controllo servizi per sostituire il file binario originale con la versione instrumentata.Assicurarsi che il tipo di avvio del servizio sia impostato su Manuale.
Inizializzare le variabili di ambiente di profilo.Tipo:
VSPerfClrEnv {/globaltracegc | /globaltracegclife}
/globaltracegc e /globaltracegclife consentono la raccolta di dati sull'allocazione di memoria e la durata degli oggetti.
Opzione
Descrizione
/globaltracegc
Raccoglie unicamente i dati sull'allocazione di memoria.
/globaltracegclife
Raccoglie i dati sull'allocazione di memoria e sulla durata degli oggetti.
Riavviare il computer.
Aprire una finestra del prompt dei comandi.
Avviare il profiler.Tipo:
VSPerfCmd /start:trace /output**:**OutputFile [Options]
L'opzione /start: contention consente di inizializzare il profiler.
L'opzione **/output:**OutputFile è obbligatoria con /start.OutputFile specifica il nome e il percorso del file dei dati di profilo (vsp).
È possibile utilizzare qualsiasi opzione riportata di seguito con l'opzione /start:sample.
[!NOTA]
Le opzioni /user e /crosssession sono in genere obbligatorie per i servizi.
Opzione
Descrizione
/user:[Domain\]UserName
Specifica il dominio e il nome utente dell'account proprietario del processo di lavoro ASP.NET.Questa opzione è obbligatoria se il processo è in esecuzione come un utente diverso dall'utente connesso.Il proprietario del processo è elencato nella colonna Nome utente della scheda Processi di Gestione attività di Windows.
Abilita il profilo dei processi in altre sessioni di accesso.Questa opzione è obbligatoria se l'applicazione ASP.NET è in esecuzione in una sessione diversa.L'ID di sessione è elencato nella colonna ID sessione della scheda Processi di Gestione attività di Windows.È possibile specificare /CS come abbreviazione per /crosssession.
/waitstart[:Interval]
Specifica il numero di secondi di attesa prima che il profiler venga inizializzato prima che venga restituito un errore.Se Interval non è specificato, il profiler attenderà un periodo di tempo indefinito.Per impostazione predefinita, /start viene immediatamente restituito.
Per avviare il profiler con la raccolta dei dati in pausa, aggiungere l'opzione /globaloff alla riga di comando /start.Utilizzare /globalon per riprendere il profilo.
/counter:Config
Raccoglie informazioni dal contatore delle prestazioni del processore specificato in Config.Le informazioni del contatore vengono aggiunte ai dati raccolti a ogni evento di profilo.
/wincounter:WinCounterPath
Specifica un contatore delle prestazioni Windows di cui raccogliere i dati durante il profilo.
/automark:Interval
Utilizzare unicamente con /wincounter.Specifica il numero di millisecondi tra gli eventi di raccolta dati del contatore delle prestazioni Windows.Il valore predefinito è 500 ms.
/events:Config
Specifica un evento Traccia eventi per Windows (ETW) di cui raccogliere i dati durante il profilo.Gli eventi ETW vengono raccolti in un file separato con estensione etl.
Se necessario, avviare il servizio.
Connettere il profiler al servizio.Tipo:
**VSPerfCmd /attach:**PID|ProcessName
- Specifica l'ID o il nome del processo del servizio.È possibile visualizzare gli ID e i nomi di tutti i processi in esecuzione in Gestione attività di Windows.
Controllo della raccolta di dati
Quando il servizio è in esecuzione, è possibile controllare la raccolta dei dati avviando e interrompendo la scrittura di dati nel file utilizzando le opzioni di VSPerfCmd.exe.Controllando la raccolta dei dati, è possibile raccogliere dati per una parte specifica dell'esecuzione del programma, ad esempio l'avvio o l'arresto dell'applicazione.
Per avviare e interrompere la raccolta dei dati
Le coppie seguenti di opzioni di VSPerfCmd avviano e interrompono la raccolta dei dati.Specificare ogni opzione in una riga di comando separata.È possibile attivare e disattivare più volte la raccolta dei dati.
Opzione
Descrizione
Avvia (/globalon) o interrompe (/globaloff) la raccolta dei dati per tutti i processi.
/processon:PID/processoff:PID
Avvia (/processon) o interrompe (/processoff) la raccolta dei dati per il processo specificato dall'ID processo (PID).
/threadon:TID/threadoff:TID
Avvia (/threadon) o interrompe (/threadoff) la raccolta dei dati per il thread specificato dall'ID thread (TID).
Fine della sessione di profilo
Per terminare una sessione di profilo, chiudere l'applicazione che esegue il componente instrumentato, quindi avviare l'opzione VSPerfCmd /shutdown per disattivare il profiler e chiudere il file dei dati di profilo.Il comando VSPerfClrEnv /globaloff cancella le variabili di ambiente di profilo.
Per terminare una sessione di profilo
Arrestare il servizio da Gestione controllo servizi.
Arrestare il profiler.Tipo:
VSPerfCmd /shutdown
Dopo avere completato tutte le attività di profilo, cancellare le variabili di ambiente di profilo.Tipo:
VSPerfClrEnv /globaloff
Sostituire il modulo instrumentato con l'originale.Se necessario, riconfigurare il tipo di avvio del servizio.
Riavviare il computer.
Vedere anche
Concetti
Profilatura dei servizi tramite riga di comando
Altre risorse
Visualizzazioni dei dati di memoria .NET degli strumenti di profilatura