ServiceFabric 应用程序中的 TraceEventSession 使用引发资源不足错误

TraceEventSession usage in ServiceFabric application raises insufficient resource error

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

Insufficient system resources exist to complete the requested service. (Exception from HRESULT: 0x800705AA)

System.Runtime.InteropServices.COMException (0x800705AA): Insufficient system resources exist to complete the requested service. (Exception from HRESULT: 0x800705AA) at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableProvider(Guid providerGuid, TraceEventLevel providerLevel, UInt64 matchAnyKeywords, TraceEventProviderOptions options) at TestApp.Service.Program.Main() in C:\Agent_work\s\TestApp\TestApp.Service\Program.cs:line 61

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

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

session.EnableProvider(ServiceEventSource.Current.Name);

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

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