是否可以在服务结构中使用visual studio性能分析?

时间:2016-06-08 14:48:58

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

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

我希望对我的服务架构群集进行性能配置。

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

然后我点击开始,立即我的exe崩溃了。我认为这是因为视觉工作室试图运行我的服务"在服务结构上下文之外作为独立的exe。

不知道该怎么办...

堆栈跟踪是:

DEBUG:激活选项

未处理的异常:System.Fabric.FabricConnectionDeniedException:未授权连接---> System.Runtime.InteropServices.COMException:来自HRESULT的异常:0x80071C43    在System.Fabric.Interop.NativeRuntime.FabricEndGetNodeContext(IFabricAsyncOperationContext context)    在System.Fabric.FabricRuntime.NativeFabricRuntimeFactory.GetNodeContextEndWrapper(IFabricAsyncOperationContext context)    在System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish(IFabricAsyncOperationContext context,Boolean expectedCompletedSynchronously)    ---内部异常堆栈跟踪结束---    在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()

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

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

由于这个原因,仪器目前还没有与Service Fabric项目一起开箱即用。我们正在研究如何在未来实现这一目标。

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

答案 1 :(得分:0)

请参阅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]

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

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

    运行VSPerfCmd /?以获取更多说明,并查看分析选项的完整列表。