ServiceFabric应用程序中的TraceEventSession使用会导致资源错误不足

Rij*_* Kb 4 c# etw azure-service-fabric

我有一个在集群中运行的状态全服务结构应用程序.我有大约20个状态完整的应用程序在同一个集群中运行.我使用TraceEventSession进行关联.我的群集有10个节点.当我部署应用程序时,我能够在性能监视器中看到TPL会话正在运行.当群集中部署的应用程序数量增加时,我开始收到指定的错误

存在不足的系统资源来完成所请求的服务.(HRESULT异常:0x800705AA)

System.Runtime.InteropServices.COMException(0x800705AA):存在不足的系统资源来完成所请求的服务.(来自HRESULT的异常:0x800705AA)在Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProvider(Guid providerGuid,TraceEventLevel providerLevel,UInt64 matchAnyKeywords,TraceEventProviderOptions选项)的System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode,IntPtr errorInfo)中C:\ Agent_work\12\s\TestApp\TestApp.Service\Program.cs中的TestApp.Service.Program.Main():第61行

这是我在program.cs中编写的代码,用于启用tpl会话

session = new TraceEventSession("TestApp_TplSession");  
session.EnableProvider(TplEtwProviderTraceEventParser.ProviderGuid, TraceEventLevel.Verbose,
                        (ulong)TplEtwProviderTraceEventParser.Keywords.TasksFlowActivityIds);

session.EnableProvider(ServiceEventSource.Current.Name);
Run Code Online (Sandbox Code Playgroud)

我不确定将在同一群集中部署多少个状态全服务应用程序.我将如何摆脱这个错误?

小智 5

Windows可以同时运行64个ETW会话的限制.考虑使用在每个节点上运行的单个无状态应用程序来创建单个会话.