2016-06-08 64 views
5

Speriamo che sia semplice ...È possibile utilizzare la profilazione delle prestazioni di Visual Studio con il fabric di servizio?

Voglio il profilo delle prestazioni del mio gruppo di tessuto di servizio.

Finora I: - Vai a Avvia strumenti di diagnostica senza debug. - Passare attraverso la procedura guidata selezionando il mio progetto di fabric di servizio come progetto di avvio. - Poi si chiede quali progetti per includere, in modo da includere il mio servizio exe - Poi seleziono strumentazione (voglio tempistica livello di metodo)

poi mi ha colpito iniziare e subito il mio crash exe. Presumo che questo sia dovuto al fatto che Visual Studio sta cercando di eseguire il mio "servizio" al di fuori del contesto del fabric di servizi come un exe indipendente.

Non sai cosa fare al riguardo che anche se ...

L'analisi dello stack è:

DEBUG: attivazione opzioni

Eccezione non gestita: System.Fabric.FabricConnectionDeniedException: Non autorizzati a connettersi - -> System.Runtime.InteropServices.COMException: Eccezione da HRESULT: 0x80071C43 a System.Fabric.Interop.NativeRuntime.FabricEndGetNodeContext (contesto IFabricAsyncOperationContext) a System.Fabric.FabricRuntime.NativeFabricRuntimeFactory.GetNodeContextEndWrappe R (contesto IFabricAsyncOperationContext) a System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish (contesto IFabricAsyncOperationContext, booleano expectedCompletedSynchronously) --- Fine dell'analisi dello stack eccezione interna --- a System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Attività dell'attività) in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Attività dell'attività) in Microsoft.ServiceFabric.Services.Runtime.RuntimeContext.d__3.MoveNext() --- Fine della traccia dello stack dalla posizione precedente in cui è stata generata un'eccezione --- in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task) in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) su Microsoft.ServiceFabric.Services.Runtime.ServiceRuntime.d__0.MoveNext() --- Fine traccia dello stack dalla posizione precedente in cui è stata generata un'eccezione --- in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (attività dell'attività) a System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (compito Task) a System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Grazie per l'aiuto in anticipo!

+0

Vale sempre la parola googling del messaggio di eccezione: [Errore di debug in VS2015 RC: System.Fabric.FabricConnectionDeniedException] (https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f5d05143-15ce-4685- 9899-6b659ffb77a0/debugging-fail-in-vs2015-rc-systemfabricfabricconnectiondeniedexception? Forum = AzureServiceFabric) – stuartd

+1

Grazie, ma l'ho trovato. Se leggi un po 'più da vicino vedrai che non sto parlando di ottenere l'errore cercando di avviarlo ... Non ho alcun problema a iniziarlo per il debug normale. La domanda era: come ottenerla in caso di avvio tramite il profiler delle prestazioni. – Steve

risposta

5

Quello che vedete è che Visual Studio tenta di avviare il processo host del servizio da solo al di fuori del runtime di Service Fabric. Normalmente, quando si esegue un servizio tramite Visual Studio, si distribuisce il il progetto dell'applicazione, che passa attraverso il processo di registrazione e creazione di istanze dei servizi nel cluster di Fabric Service locale.

La strumentazione attualmente non funziona con i progetti di Service Fabric per questo motivo. Stiamo cercando modi per renderlo possibile in futuro.

È ancora possibile eseguire il profilo di campionamento, che consente di collegare il profiler a un EXE in esecuzione. In tal caso, prima dovresti distribuire l'applicazione normalmente, quindi collegare il profiler ai tuoi EXE di servizio.

+1

Grazie per il feedback. Qualche idea su quando sarà supportato? O altri strumenti/soluzioni alternative? (A prescindere dal campionamento di c) – Steve

+2

Puoi fornire ulteriori indicazioni sul profiling del campionamento? - L'unica cosa che riesco a trovare sono articoli MSDN non aggiornati che mi chiedono di [cliccare su cose che non esistono] (https://msdn.microsoft.com/en-us/library/ms182384.aspx). - Sto usando una SKU Enterprise di VS2015 Update 3. - Un clic per click sarebbe bello. – BrainSlugs83

+0

@ BrainSlugs83 - che sembra una domanda a parte - sentiti libero di risolverlo :) –

0

Vedi https://msdn.microsoft.com/en-us/library/dd255414.aspx?f=255&MSPPError=-2147217396

  1. Se necessario, inizializzare le variabili d'ambiente di profilatura con una variante di VSPerfClrEnv {/globalsamplegc | /globalsamplegclife}[/samplelineoff], quindi riavviare.
  2. Avviare il profiler di raccogliere dati con una variante di:

    VSPerfCmd /START:{COVERAGE|SAMPLE|CONCURRENCY|TRACE} /OUTPUT:file /ATTACH:(pid|name)[,(pid|name)]* [/USER:[domain\]username]

Il /USER:[domain\]username è necessario se il servizio o il processo viene eseguito con un account utente diverso.

Un'estensione file .vspx o .vsp viene aggiunta alla specifica /OUPUT:file. Quindi è possibile aprire il file .vspx o .vsp in Visual Studio per visualizzare il report di profilazione.

Eseguire VSPerfCmd /? per ulteriori spiegazioni e visualizzare l'elenco completo delle opzioni di creazione profili.

Problemi correlati