【问题标题】:Is it possible to use visual studio performance profiling with service fabric?是否可以将 Visual Studio 性能分析与服务结构一起使用?
【发布时间】:2016-10-08 22:07:32
【问题描述】:

希望这很简单......

我想对我的 Service Fabric 集群进行性能分析。

到目前为止,我: - 无需调试即可开始诊断工具。 - 通过向导选择我的服务结构项目作为启动项目。 - 然后它询问要包括哪些项目,所以我包括我的服务 exe - 然后我选择仪器(我想要方法级别的时间)

然后我点击开始,我的 exe 立即崩溃。我认为这是因为 Visual Studio 正在尝试将我的“服务”作为独立的 exe 在服务结构上下文之外运行。

虽然不知道该怎么办...

堆栈跟踪是:

调试:激活选项

未处理的异常:System.Fabric.FabricConnectionDeniedException:未授权连接 ---> System.Runtime.InteropServices.COMException:来自 HRESULT 的异常:0x80071C43 在 System.Fabric.Interop.NativeRuntime.FabricEndGetNodeContext(IFabricAsyncOperationContext 上下文) 在 System.Fabric.FabricRuntime.NativeFabricRuntimeFactory.GetNodeContextEndWrapper(IFabricAsyncOperationContext 上下文) 在 System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish(IFabricAsyncOperationContext 上下文,布尔预期CompletedSynchronously) --- 内部异常堆栈跟踪结束 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.ServiceFabric.Services.Runtime.RuntimeContext.d__3.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.ServiceFabric.Services.Runtime.ServiceRuntime.d__0.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()

提前感谢您的帮助!

【问题讨论】:

标签: c# .net visual-studio-2015 profiling azure-service-fabric


【解决方案1】:

您看到的是 Visual Studio 试图在 Service Fabric 运行时之外自行启动您的服务主机进程。通常,当您通过 Visual Studio 运行服务时,您部署应用程序项目,该项目将完成在本地 Service Fabric 群集上注册和实例化服务的过程。

由于这个原因,Instrumentation 目前不适用于 Service Fabric 项目的开箱即用。我们正在寻找在未来实现这一目标的方法。

您仍然可以进行采样分析,这允许您将分析器附加到正在运行的 EXE。在这种情况下,您需要先正常部署您的应用程序,然后将分析器附加到您的服务 EXE。

【讨论】:

  • 感谢您的反馈。知道什么时候会支持它吗?或任何其他工具/解决方法? (除了c的抽样)
  • 您能否提供更多有关抽样分析的指导? -- 我唯一能找到的是过时的 MSDN 文章,它们要求我 click on things that don't exist。 -- 我使用的是 VS2015 Update 3 的 Enterprise SKU。 -- 一个点击一个点击就好了。
  • @BrainSlugs83 - 这本身就是一个问题 - 随时提出来 :)
【解决方案2】:

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

  1. 如果需要,使用VSPerfClrEnv {/globalsamplegc | /globalsamplegclife}[/samplelineoff] 的变体初始化分析环境变量,然后重新启动。
  2. 启动探查器以收集具有以下变体的数据:

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

如果服务或进程在不同的用户帐户下运行,则需要/USER:[domain\]username

.vspx.vsp 文件扩展名被添加到 /OUPUT:file 规范中。然后您可以在 Visual Studio 中打开 .vspx.vsp 文件以查看分析报告。

运行VSPerfCmd /? 以获得更多解释并查看分析选项的完整列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多