5

Hoffentlich ist das einfach ...Ist es möglich, Visual Studio Performance Profiling mit Service Fabric zu verwenden?

Ich möchte Performance-Profil mein Service-Fabric-Cluster.

So weit ich: - Gehe zu Start Diagnosetools ohne Debuggen. - Gehen Sie durch den Assistenten, der mein Service Fabric-Projekt als Startprojekt auswählt. - Dann fragt ich, welche Projekte enthalten sind, also schließe ich meinen Dienst ein exe - Dann wähle ich Instrumentierung (Ich möchte Methodenebenen-Timing)

Dann hit ich Start und sofort stürzt meine exe ab. Ich nehme an, das liegt daran, dass Visual Studio versucht, meinen "Dienst" außerhalb des Service-Fabric-Kontexts als eigenständige Exe auszuführen.

nicht sicher, was zu, dass, obwohl zu tun ...

Der Stack-Trace ist:

DEBUG: Aktivieren Optionen

Unbehandelte Ausnahme: System.Fabric.FabricConnectionDeniedException: Nicht verbinden autorisiert - -> System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0x80071C43 bei System.Fabric.Interop.NativeRuntime.FabricEndGetNodeContext (IFabricAsyncOperationContext-Kontext) bei System.Fabric.FabricRuntime.NativeFabricRuntimeFactory.GetNodeContextEndWrappe R (IFabricAsyncOperationContext context) bei System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish (IFabricAsyncOperationContext Kontext, Boolean expectedCompletedSynchronously) --- Ende der Ausnahmestapelüberwachung --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task-Aufgabe) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Microsoft.ServiceFabric.Services.Runtime.RuntimeContext.d__3.MoveNext() --- Ende des Stack-Trace von früheren Ort, an dem Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Aufgabe Aufgabe) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) at Microsoft.ServiceFabric.Services.Runtime.ServiceRuntime.d__0.MoveNext() --- Ende der Stapelüberwachung von der vorherigen Position, an der Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task-Task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task-Task) bei System.Runtime.CompilerServices.TaskAwaiter.GetResult()

Danke für die Hilfe im Voraus!

+0

Immer lohnt googlen die Ausnahmemeldung - [Debugging schlägt in VS2015 RC: System.Fabric.FabricConnectionDeniedException] (https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f5d05143-15ce-4685- 9899-6b659ffb77a0/debugging-fails-in-vs2015-rc-systemfabricfabricconnectiondenieexception? Forum = AzureServiceFabric) – stuartd

+1

Danke, aber ich habe das gefunden. Wenn Sie etwas näher lesen, werden Sie sehen, dass ich nicht nur davon spreche, diesen Fehler zu bekommen, wenn ich versuche, es zu starten ... Ich habe kein Problem damit, es für das normale Debugging zu starten. Die Frage war, wie komme ich dazu, wenn ich es über den Performance-Profiler starte? – Steve

Antwort

5

Sie sehen, dass Visual Studio versucht, den Diensthostprozess außerhalb der Service Fabric-Laufzeit selbst zu starten. Wenn Sie einen Dienst über Visual Studio ausführen, stellen Sie normalerweise das Anwendungsprojekt bereit, das den Prozess der Registrierung und Instanziierung Ihrer Dienste auf Ihrem lokalen Service Fabric-Cluster durchläuft.

Die Instrumentierung funktioniert aus diesem Grund nicht sofort mit Service Fabric-Projekten. Wir suchen nach Wegen, dies in Zukunft möglich zu machen.

Sie können weiterhin Sampling-Profiling durchführen, mit dem Sie den Profiler an eine laufende EXE anhängen können. In diesem Fall würden Sie Ihre Anwendung normalerweise zuerst bereitstellen und dann den Profiler an Ihre Service-EXEs anhängen.

+1

Danke für die Rückmeldung. Irgendeine Idee, wann es unterstützt wird? Oder andere Tools/Workarounds? (Abgesehen von der Probenahme von o) – Steve

+2

Können Sie weitere Informationen zur Stichprobenerstellung geben? - Das Einzige, was ich finden kann, sind veraltete MSDN-Artikel, die mich auf [Dinge, die nicht existieren] klicken (https://msdn.microsoft.com/en-us/library/ms182384.aspx). - Ich benutze eine Enterprise SKU von VS2015 Update 3. - Ein Klick auf Klick wäre nett. – BrainSlugs83

+0

@ BrainSlugs83 - das fühlt sich wie eine Frage an sich selbst - fühlen Sie sich frei, es zu erhöhen :) –

0

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

  1. Bei Bedarf initialisieren die Profilierungsumgebungsvariablen mit einer Variante des VSPerfClrEnv {/globalsamplegc | /globalsamplegclife}[/samplelineoff], dann neu starten.
  2. die Profiler starten Daten mit einer Variante zu sammeln:

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

Die /USER:[domain\]username benötigt wird, wenn der Dienst oder Prozess unter einem anderen Benutzerkonto ausgeführt wird.

Eine .vspx oder .vsp Dateierweiterung wird zur /OUPUT:file Spezifikation hinzugefügt. Dann können Sie die Datei .vspx oder .vsp in Visual Studio öffnen, um den Profilerstellungsbericht anzuzeigen.

Führen Sie VSPerfCmd /? für weitere Erklärung und um die vollständige Liste der Profilierungsoptionen anzuzeigen.

Verwandte Themen