2009-04-15 8 views
5

Sto costruendo una soluzione basata su client-server; client è un'applicazione desktop e il server è un'applicazione Web.Utilità di monitoraggio (rete) delle risorse e prestazioni di un'applicazione Windows

Fondamentalmente, ho bisogno di monitorare le prestazioni e l'utilizzo delle risorse del client, che è un'applicazione desktop Windows basata su .NET 2.0.

La cosa più importante che devo monitorare sono le risorse di rete che il client utilizza, ovvero qual è la dimensione dei dati che fluiscono dal client al server e qual è la dimensione dei dati che il client download dal server.

Oltre a ciò, anche il monitoraggio delle prestazioni generali può essere d'aiuto.

Guida.

Modifica: alcune persone hanno suggerito di utilizzare perfmon, ma non sono i valori visualizzati in perfmon system-wide? Ho bisogno di queste statistiche basate sulla rete per una sola applicazione ... byte inviati e ricevuti da una singola applicazione desktop.

risposta

2

È necessario dividere il monitoraggio in due parti:

  • Come funziona il sistema interagisce con il server (numero di chiamate effettuate)
  • quantità di traffico di rete (dimensione dei dati scambiati per ogni chiamata)

La prima parte è (nella mia esperienza) spesso negata mentre ha molta importanza, perché l'acquisizione di una nuova connessione è spesso molto più costosa del traffico dati in sé.

Non ci dici nulla del re di connessione che si sta utilizzando (chiamate tcpip di basso livello, servizi web, WCF o che altro), ma il mio suggerimento è:

  • trovare un modo per determinare in che modo molte volte l'applicazione chiama il server
  • scoprire quanto ogni singola chiamata sta costando in termini di dati scambiati

Come monitorare questi valori dipende molto dalla tecnologia impiegata, per alcuni è molto semplice (se, ad esempio, stai utilizzando un servizio web, sett il Fiddler per monitorare le chiamate ed esaminare i risultati del monitoraggio è molto semplice), per altri è necessario lavorare utilizzando un analizzatore di traffico a basso livello come Wireshark o MS Network Monitor e imparare come filtrare il traffico in base all'indirizzo IP del server, porte utilizzate e altri parametri.

Se si chiarisce l'architettura dell'applicazione, posso provare ad essere più specifica.

saluti Massimo

0

Si vuole guardare perfmon (altrimenti chiamato Performance Monitor negli strumenti di amministrazione dal menu di avvio).

Aprilo nella visualizzazione grafica predefinita, aggiungi un contatore, seleziona l'interfaccia di rete, quindi i byte al secondo (o un contatore simile), fai clic su OK e il gioco è fatto.

È possibile sperimentare con gli altri contatori di rete poiché ce ne sono molti, uno di loro farà esattamente ciò che si desidera. Puoi anche salvare i log perfmon in un file e visualizzarli successivamente: vedrai il grafico nella sua interezza e potrai "ingrandire" sulle sezioni. In alternativa, puoi salvare i file in stile log con solo numeri grezzi.

Ecco un quick guide attraverso perfmon come strumento di amministrazione, una volta capito questo, il resto viene facilmente.

In Vista non è possibile aggiungere più contatori singoli, si aggiunge l'intero gruppo di contatori raggruppati sotto un oggetto, quindi per il mio esempio si aggiungerebbe l'oggetto Interfaccia di rete, quindi si vedrà tutto il singolo contatori sul grafico dopo aver fatto clic su OK.

+0

non sono i valori visualizzati in perfmon a livello di sistema? Ho bisogno di queste statistiche basate sulla rete per una sola applicazione ... byte inviati e ricevuti da una singola applicazione desktop. – Sameet

+0

ah sì ... beh, è ​​possibile utilizzare l'oggetto processo e l'istanza dell'applicazione per vedere tutti i numeri I/O (ad es. Byte dati I/O); sfortunatamente anche questo include il disco I/O. – gbjbaanb

2

È inoltre possibile utilizzare Task Manager per eseguire questa operazione. Vai alla scheda Processi, quindi Visualizza -> "seleziona colonne". Controllare "I/O read byte" e "I/O write bytes". Quindi trova il tuo programma nell'elenco dei processi e puoi osservare i valori cumulativi.

+0

secondo msdn che è più di una rete, no? Il numero di byte letti nelle operazioni di input/output generate da un processo, inclusi file, rete e I/O del dispositivo. – duckworth

0

Se si desidera che questo incorporato nel codice di base del cliente, e che non utilizzano uno strumento esterno, è possibile utilizzare Performance Counters per ottenere l'accesso a questa e molte altre cose riportati dal Performance Monitor, Task Manager, ecc

3

lo strumento standard per il monitoraggio della rete è Wireshark. Permette di filtrare il traffico di rete in modo molto flessibile. Questo potrebbe essere piuttosto eccessivo per la tua applicazione. Se si utilizza pure .NET, suggerirei di aggiungere la registrazione delle prestazioni nelle classi di rete sul lato server, se si utilizzano le classi di libreria .Net, quindi ereditare da esse le proprie classi che aggiungono statistiche quando si inviano e ricevono dati .

2

Ho provato il perfmon e non sono stato in grado di osservare il nostro traffico di rete. Ma sono stato in grado di Performance Explorer in Visual Studio 2005 Team Suite.

Se si dispone di Team Edition Visual Studio è possibile impostare Sampling/Instrumentation sull'applicazione desktop. Quindi vai nelle opzioni della sessione. selezionare Eventi -> Traccia del kernel di Windows -> Rete. Esegui la tua applicazione e lascia che lo studio visivo registri i dati. Quindi salva il rapporto. (Adoro Microsoft per questa "funzionalità") vai al prompt dei comandi, vai a C: \ Programmi \ Microsoft Visual Studio 8 \ Team Tools \ Performance Tools ed esegui "vsperfreport/CALLTRACE (filename) .vsp" Questo produrrà un file csv contenente tutti i pacchetti di rete inviati/ricevuti/dimensione/porta ecc dall'applicazione desktop.

So che questa è stata una soluzione a lungo termine ma l'ho appena provata sulla mia applicazione .Net 2.0 e ha catturato tutte le nostre comunicazioni con Oracle Identity Manager e Oracle Database.

1

Non è chiaro dal tuo post se si utilizza le richieste HTTP. Hai indicato che il server è un'applicazione web, il che implica (forse erroneamente) che potresti utilizzare il protocollo HTTP per inviare/ricevere dati dal server al client.

In tal caso, uno strumento che potrebbe essere utile è Fiddler.Questo strumento monitorerà tutto il traffico HTTP all'interno e all'esterno della workstation e può (credo) guardare sessioni e applicazioni specifiche. La parte interessante è che puoi vedere le singole richieste e vedere le statistiche per queste richieste, inclusi i byte in/out, i tempi di andata e ritorno e altri utili bit di informazione.

Se non si dispone di HTTP, questo strumento non sarà di aiuto.

1

Sono sorpreso che nessuno abbia suggerito SysInternals (ora Microsoft) Process Explorer (technet.microsoft.com/en-us/sysinternals/bb896653.aspx). Se fai clic con il pulsante destro del mouse sull'eseguibile in questione e le proprietà del clic sinistro, verrà visualizzata una finestra di dialogo. Quindi si passa alla scheda delle prestazioni e si può monitorare l'I/O dell'eseguibile. La scheda Grafico prestazioni mostrerà l'utilizzo della CPU e la cronologia dei byte di I/O grafica nel tempo. È uno strumento fantastico e gratuito.

0

Si consiglia di consultare ACE Analyst per questo caso d'uso: pensarlo come un livello superintelligente in cima alle acquisizioni di pacchetti Wireshark. È necessario esaminare i pacchetti per comprendere la vera natura del comportamento dell'applicazione come viene eseguito attraverso la rete.

Problemi correlati