Qual è lo strumento migliore per tenere traccia dell'utilizzo della memoria di un processo per un lungo periodo di tempo in Windows?

StackOverflow https://stackoverflow.com/questions/97590

  •  01-07-2019
  •  | 
  •  

Domanda

Qual è il miglior strumento disponibile per monitorare l'utilizzo della memoria del mio servizio Windows C#/.Net per un lungo periodo di tempo.Per quanto ne so, strumenti come perfmon possono monitorare l'utilizzo della memoria per un breve periodo di tempo, ma non graficamente per un lungo periodo di tempo.Ho bisogno di dati sulle tendenze nel corso dei giorni, non dei secondi.

Per essere chiari, voglio monitorare l'utilizzo della memoria a un livello di dettaglio elevato per un lungo periodo e fare in modo che il grafico mostri sia l'intero intervallo di tempo che il livello di dettaglio.Ho bisogno di un piccolo intervallo di campionamento e di un grafico di grandi dimensioni.

È stato utile?

Soluzione

Perfmon secondo me è uno dei migliori strumenti per farlo, ma assicurati di configurare correttamente l'intervallo di campionamento in base al tempo che desideri monitorare.

Ad esempio se vuoi monitorare un processo:

  • per 1 ora:Vorrei utilizzare intervalli di 1 secondo (questo genererà 60*60 campioni)
  • per 1 giorno:Vorrei utilizzare intervalli di 30 secondi (questo genererà 2*60*24 campioni)
  • per 1 settimana:Utilizzerei intervalli di 1 minuto (questo genererà 60*24*7 campioni)

Con questi intervalli di campionamento Perfmon non dovrebbe avere problemi a generare un buon output grafico dei tuoi contatori.

Altri suggerimenti

Bene, ho usato Perfmon, ho esportato i risultati in un CSV e successivamente ho usato Excel per le statistiche.Ha funzionato abbastanza bene l'ultima volta che ho avuto bisogno di monitorare un processo

Giocando con Gestione computer (supponendo che tu stia utilizzando Windows qui) e sembra che tu possa fargli monitorare un processo nel tempo.Vai a gestione computer -> registri e avvisi sulle prestazioni e controlla i registri dei contatori/traccia.Fare clic con il tasto destro sui registri dei contatori e aggiungere un nuovo registro.Ora fai clic su Aggiungi oggetto e seleziona memoria.Ora fai clic su Aggiungi contatori e modifica "Oggetto prestazione" in Processo e seleziona il processo.

Per quanto il monitoraggio della memoria sia di per sé, probabilmente stai pensando alla profilazione della memoria per identificare perdite o oggetti obsoleti - http://memprofiler.com/ è una buona scelta qui, ma ce ne sono molti altri.

Se vuoi fare qualcosa di molto specifico, non aver paura di scrivere il tuo logger basato su WMI in esecuzione su un timer: potresti inviarlo via e-mail alle statistiche di elaborazione, avvisare quando cresce troppo velocemente o troppo alto, inviarlo come XML per grafici, ecc.

Se hai familiarità con Python, è abbastanza semplice scrivere uno script per questo.

Python in stato attivo (che è gratuito) espone le parti rilevanti dell'API Win32 tramite il file win32process modulo.

Puoi anche controllare tutti i moduli relativi a Win32 o utilizzare gotAPI per sfogliare le librerie standard di Python.

Consiglierei di utilizzare il Validatore di memoria .Net strumento dalla verifica del software.Questo strumento mi ha aiutato a risolvere molti problemi diversi relativi alla gestione della memoria nell'applicazione .Net con cui devo lavorare.

Io utilizzo più frequentemente la versione C++ ma sono abbastanza simili e il fatto che tu possa davvero vedere in tempo reale il tipo di oggetti che vengono allocati ti sarà prezioso.

Ho usato ProcessMonitor se hai bisogno di qualcosa di più potente di perfmon.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top