.net ETW跟踪:连续跟踪几天后,日志文件已损坏

.net ETW跟踪:连续跟踪几天后,日志文件已损坏,.net,etw,etw-eventsource,ms-tracing-eventsource,.net,Etw,Etw Eventsource,Ms Tracing Eventsource,我们使用ETW自定义EventSource(从Microsoft.Diagnostics.Tracing.EventSource继承,从NUGET继承Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.28)为我们的应用程序插入指令 我们的提供程序在会话中启用,该会话可以捕获文件中的事件。下面是配置 跟踪会话: 流模式:文件 跟踪缓冲区 缓冲区大小:512 KB 最小缓冲区:200 最大缓冲区:400 刷新计时器:0秒 文件: 日志

我们使用ETW自定义EventSource(从Microsoft.Diagnostics.Tracing.EventSource继承,从NUGET继承Microsoft.Diagnostics.Tracing.EventSource.Redist.1.1.28)为我们的应用程序插入指令

  • 我们的提供程序在会话中启用,该会话可以捕获文件中的事件。下面是配置 跟踪会话:

    • 流模式:文件
  • 跟踪缓冲区

    • 缓冲区大小:512 KB
    • 最小缓冲区:200
    • 最大缓冲区:400
    • 刷新计时器:0秒
    文件:

    • 日志模式:新建文件(达到最大文件大小时新建文件) 停止条件:
    • 最大大小:11MB

    • 最大事件速率约为每秒几百个事件
    • 我们使用Windows server 2012 SP1
    偶尔我们会看到生成的ETL文件大小为11MB(有时甚至更大),但它没有任何事件。这主要发生在可靠性服务器上,在这些服务器上,系统以最大事件率运行数天。一旦出现这种情况,此后所有日志文件都没有事件,我们将丢失此后的所有事件

    尝试在Windows性能分析器中打开日志时,将显示以下错误消息

    这一问题很少出现。这使得尝试不同的尝试和错误变得困难

    已尝试解决方案(无效):

  • 将最小和最大缓冲区的数量分别减少到24和48
  • 将刷新计时器设置为10秒。这有一个缺点,即在事件率较低的情况下,创建11MB日志文件时事件很少

  • 有人曾面临过这样的问题吗?请提供帮助。

    使用更大的缓冲区并增加最大大小。我们的最大事件率不是很高。512KB不够吗?附加说明:我们有多个应用程序(多个进程)使用同一个提供程序。请尝试更高的缓冲区。丢失事件意味着已捕获新事件,但旧事件未写入ETL