C# Azure应用程序服务跟踪
我们在Azure app Service中部署了一个应用程序,它具有以下日志记录配置: 如果我们没有在System.Diagnostics命名空间(System.Diagnostics.Trace/System.Diagnostics.TraceSource)中使用任何方法,那么此设置的相关性是什么?我们注意到,当级别设置为“Verbose”时,系统性能较差,而当级别设置为“Warning”时,性能有所提高。但是,我们没有使用 System.Diagnostics.Trace.Trace信息或 System.Diagnostics.Trace.WriteLineC# Azure应用程序服务跟踪,c#,azure,azure-web-app-service,azure-app-service-plans,.net-trace,C#,Azure,Azure Web App Service,Azure App Service Plans,.net Trace,我们在Azure app Service中部署了一个应用程序,它具有以下日志记录配置: 如果我们没有在System.Diagnostics命名空间(System.Diagnostics.Trace/System.Diagnostics.TraceSource)中使用任何方法,那么此设置的相关性是什么?我们注意到,当级别设置为“Verbose”时,系统性能较差,而当级别设置为“Warning”时,性能有所提高。但是,我们没有使用 System.Diagnostics.Trace.Trace信息或
编写跟踪。请记住,当请求传入时,执行的不仅仅是代码 即使您在应用程序中未使用System.Diagnostics.Trace命名空间,也有可能存在某些NuGet包或其他可能存在的依赖项 除此之外,托管您的应用程序的服务器代码将此输入作为一个标志,以启动必要的进程来侦听和捕获跟踪事件,这本身就与您的应用程序争夺资源 您应该检查blob存储中的输出文件,以了解详细级别生成的数据量
除非您正在收集信息以诊断问题,否则不应将日志记录设置为详细。对于生产工作负载,您通常希望将其设置为仅错误。请记住,当请求传入时,您的代码并不是唯一执行的东西 即使您在应用程序中未使用System.Diagnostics.Trace命名空间,也有可能存在某些NuGet包或其他可能存在的依赖项 除此之外,托管您的应用程序的服务器代码将此输入作为一个标志,以启动必要的进程来侦听和捕获跟踪事件,这本身就与您的应用程序争夺资源 您应该检查blob存储中的输出文件,以了解详细级别生成的数据量
除非您正在收集信息以诊断问题,否则不应将日志记录设置为详细。对于生产工作负载,您通常只希望将其设置为错误。正如其他人所说,即使您在代码中不调用跟踪方法,底层组件也可能会这样做。如果启用了跟踪,随着时间的推移,它可能会导致内存增加和性能下降 有关详细信息,请参见: 在启用跟踪的生产环境中运行 ASP.NET跟踪是对应用程序进行故障排除的强大功能,但在生产环境中不应将其保留为打开状态。ASP.NET跟踪使用数据结构(如DataTables)来存储跟踪信息,随着时间的推移,这些数据结构可能会导致内存过高,从而导致OOM 更多信息请参见帖子
正如Byron Tardif在他的回复中提到的,如果可能,您可以在生产环境中将级别设置为error。正如其他人所说,即使您在代码中不调用跟踪方法,底层组件也可以这样做。如果启用了跟踪,随着时间的推移,它可能会导致内存增加和性能下降 有关详细信息,请参见: 在启用跟踪的生产环境中运行 ASP.NET跟踪是对应用程序进行故障排除的强大功能,但在生产环境中不应将其保留为打开状态。ASP.NET跟踪使用数据结构(如DataTables)来存储跟踪信息,随着时间的推移,这些数据结构可能会导致内存过高,从而导致OOM 更多信息请参见帖子
正如Byron Tardif在回复中提到的那样,如果可能,您可以在生产环境中将级别设置为error。您可以不调用其中任何一个,但底层组件可以。例如,如果您在Api上启用跟踪记录,Web Api也可以发出跟踪。看见当然,WebAPI2只是一个例子。您可能不会调用其中任何一个,但底层组件可以。例如,如果您在Api上启用跟踪记录,Web Api也可以发出跟踪。看见当然,WebAPI2只是一个例子。