Domanda

Ho diversi clienti in cui la mia app WinForms non funziona come su altri clienti. Uso dotTrace di JetBrain qui in ufficio, ma ciò non mi aiuta a trovare i colli di bottiglia nelle macchine dei nostri clienti. Come posso profilare le prestazioni di un'app .NET già distribuita a un cliente? Esistono strumenti di profilazione con un componente ridistribuibile che mi consente di produrre risultati di profilazione che non possono essere utilizzati fino a quando non riporto i risultati (un'istantanea in dotTrace) all'intero strumento di profilazione?

Aggiornamento: poiché NProf è distribuibile gratuitamente, Sto pensando di distribuirlo sulla workstation di un cliente. Riporterò qui i risultati.

È stato utile?

Soluzione

Non ho familiarità con dotTrace, ma ho usato la strumentazione di Visual Studio 2008 e gli strumenti di profilazione nel contesto di Visual Studio e credo che siano distribuiti con .NET 3.5 SDK.

Lo strumento VSInstr.exe: http://msdn.microsoft.com/en-us/library/ms182402. aspx strumentalizzerà il binario distribuito.

VSPerfCmd: http://msdn.microsoft.com/en-us/library/ms182403. aspx può acquisire i dati sulle prestazioni dall'app strumentata.

Non l'ho mai fatto direttamente e unicamente dalla riga di comando, quindi non posso offrirti molto aiuto lì, ma ho pensato che questa fosse un'altra opzione per te, almeno.

Altri suggerimenti

Quindi penso che ciò di cui potresti aver bisogno sia un metodo per misurare i tempi di implementazione degli annunci di rendimento. Per quanto ingrato possa essere, potrei considerare l'aggiunta di contatori delle prestazioni alla tua applicazione. Vedi System.Diagnostics . Ho usato ampiamente per monitorare le applicazioni nella distribuzione. Ho scoperto che i profiler mentre sono fantastici a volte nascondono alcuni problemi a causa delle loro spese generali. Ad esempio, se l'applicazione accede a un database e il disco è lento causando un tempo più lungo delle query che potrebbe non essere evidente in un profiler poiché l'applicazione funzionerà più lentamente in generale.

Per il lato client se la tua app non richiede l'accesso amministrativo all'installazione, potrei rendere i contatori perf parte di una modalità di diagnostica "quotata" poiché installarli richiede l'accesso come amministratore. Vorresti mettere contatori perf per misurare cose come la durata del database e le chiamate di servizio, la dimensione delle strutture di dati che possono crescere e il numero di guasti che si verificano.

Sappiamo già che il tuo codice funziona poiché su alcune configurazioni dei clienti funziona bene. Quindi pensa ad aggiungere la strumentazione alla tua applicazione. È una di quelle scommesse non affascinanti importanti elementi di scrittura di software affidabili come una buona registrazione. Non è divertente, ma secondo me deve essere fatto. Spesso è l'unica cosa che ti dà visibilità su cosa sta facendo l'applicazione nella distribuzione. L'attuale applicazione a cui sto lavorando è passata da circa 20 contatori di perf in Rev 1 a circa 150 in Rev 2. Non ne monitoro la maggior parte per tutto il tempo, ma per avvisarmi di problemi di prestazioni e affidabilità valgono la pena .

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