我们在Azure App Service中部署了一个应用程序,它具有以下日志记录配置:
如果我们没有在System.Diagnostics命名空间中使用任何方法(System.Diagnostics.Trace / System.Diagnostics.TraceSource),那么此设置的相关性是什么?我们注意到当水平设置为"详细"时系统表现不佳。当等级设置为"警告"时,性能会提高。但是,我们没有使用
的代码System.Diagnostics.Trace.TraceInformation或 System.Diagnostics.Trace.WriteLine
写一条痕迹。
答案 0 :(得分:0)
请记住,当请求进入时,您的代码不是唯一执行的代码。
即使您没有在应用程序中使用System.Diagnostics.Trace命名空间,也可能有一些NuGet包或其他依赖项。
除此之外,托管您的应用程序的服务器代码将此输入作为标志来启动必要的过程来监听和捕获跟踪事件,这本身就与您的应用竞争资源。
您应该检查blob存储中的输出文件,以了解详细级别生成的数据量。
除非您要收集信息以诊断问题,否则不应将日志记录设置为详细信息。对于生产工作负载,您通常只想将其设置为错误。
答案 1 :(得分:0)
正如其他人所说,即使您没有在代码中调用跟踪方法,底层组件也可能会这样做。如果启用了跟踪,并且随着时间的推移,可能会导致内存增加和性能下降。
您可以在this article中找到详细信息:
在启用了跟踪的生产环境中运行
ASP.NET跟踪是一种用于对应用程序进行故障排除的强大功能,但它绝不应该留在生产环境中。 ASP.NET跟踪使用数据结构(如DataTables)来存储跟踪信息,随着时间的推移,这些可能会导致高内存条件,从而导致OOM。
有关详细信息,请参阅this blog帖子。
正如Byron Tardif在回复中提到的,如果可能,您可以在生产环境中将Level设置为错误。