是否可以对服务结构使用 visual studio 性能分析?
Is it possible to use visual studio performance profiling with service fabric?
希望这很简单...
我想对我的服务结构集群进行性能分析。
到目前为止我:
- 在不调试的情况下转到启动诊断工具。
- 通过向导 select 将我的服务结构项目作为启动项目。
- 然后它询问要包含哪些项目,所以我包含我的服务 exe
- 然后我 select 检测(我想要方法级计时)
然后我点击开始,我的 exe 立即崩溃。我认为这是因为 visual studio 试图 运行 我的 "service" 在服务结构上下文之外作为独立的 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 上下文,布尔值 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()
提前感谢您的帮助!
您看到的是 Visual Studio 试图在 Service Fabric 运行 时间之外自行启动您的服务主机进程。通常,当您通过 Visual Studio 运行 服务时,您 部署 应用程序项目,它会在本地 Service Fabric 上完成注册和实例化服务的过程簇。
出于这个原因,检测目前不能直接用于 Service Fabric 项目。我们正在寻找在未来实现这一目标的方法。
您仍然可以进行采样分析,这允许您将分析器附加到 运行ning EXE。在这种情况下,您需要先正常部署您的应用程序,然后将探查器附加到您的服务 EXE。
见https://msdn.microsoft.com/en-us/library/dd255414.aspx?f=255&MSPPError=-2147217396
- 如果需要,使用
VSPerfClrEnv {/globalsamplegc | /globalsamplegclife}[/samplelineoff]
的变体初始化分析环境变量,然后重新启动。
启动探查器以收集具有以下变体的数据:
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 /?
了解更多说明并查看分析选项的完整列表。
希望这很简单...
我想对我的服务结构集群进行性能分析。
到目前为止我: - 在不调试的情况下转到启动诊断工具。 - 通过向导 select 将我的服务结构项目作为启动项目。 - 然后它询问要包含哪些项目,所以我包含我的服务 exe - 然后我 select 检测(我想要方法级计时)
然后我点击开始,我的 exe 立即崩溃。我认为这是因为 visual studio 试图 运行 我的 "service" 在服务结构上下文之外作为独立的 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 上下文,布尔值 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()
提前感谢您的帮助!
您看到的是 Visual Studio 试图在 Service Fabric 运行 时间之外自行启动您的服务主机进程。通常,当您通过 Visual Studio 运行 服务时,您 部署 应用程序项目,它会在本地 Service Fabric 上完成注册和实例化服务的过程簇。
出于这个原因,检测目前不能直接用于 Service Fabric 项目。我们正在寻找在未来实现这一目标的方法。
您仍然可以进行采样分析,这允许您将分析器附加到 运行ning EXE。在这种情况下,您需要先正常部署您的应用程序,然后将探查器附加到您的服务 EXE。
见https://msdn.microsoft.com/en-us/library/dd255414.aspx?f=255&MSPPError=-2147217396
- 如果需要,使用
VSPerfClrEnv {/globalsamplegc | /globalsamplegclife}[/samplelineoff]
的变体初始化分析环境变量,然后重新启动。 启动探查器以收集具有以下变体的数据:
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 /?
了解更多说明并查看分析选项的完整列表。