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

时间:2016-10-11 15:24:17

标签: c# azure-service-fabric etw

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

  

没有足够的系统资源来完成所请求的服务。   (HRESULT异常:0x800705AA)

     

System.Runtime.InteropServices.COMException(0x800705AA):不足   存在系统资源以完成所请求的服务。 (例外   来自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选项)   TestApp.Service.Program.Main()in   C:\ Agent_work \ 12个\ S \ TestApp \ TestApp.Service \ Program.cs中:线   61

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

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

session.EnableProvider(ServiceEventSource.Current.Name);

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

1 个答案:

答案 0 :(得分:5)

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