调试日志记录是否会减慢我的(grails)Web应用程序的速度?

时间:2010-11-26 16:16:45

标签: performance debugging web-applications logging grails

我的grails Web应用程序当前将大量调试信息记录到文件中,几乎每个请求都会记录。

根据您的经验,我应该在将其转移到生产之前将其关闭(这会使得更难以追踪错误),或者即使有很多用户,我的应用程序的性能也几乎没有影响同一时间?

5 个答案:

答案 0 :(得分:5)

记录肯定会减慢速度。特别是写入文件非常慢。即使创建要记录的字符串的过程也会对性能产生负面影响。我强烈建议你关掉这个日志。如果你的应用程序有问题,那么你最好在开发环境中进行调试而不是生产。

答案 1 :(得分:4)

我同意@tzhx。我只会加2分:

1)您可能希望根据日志语句的重要性,使用log.info,.warn,.error划分日志语句,然后在配置中进行调整,以便在生产中使用适当的级别来处理不同的包。您可能需要一些基线级别的日志记录,即使是在prod。

2)绝对不要在prod中记录sql。如果您遇到问题,请在dev或qa环境中记录sql以确定问题。

答案 2 :(得分:1)

同意以前的答案。通常我在生产中将日志级别设置为WARN或ERROR。如果您需要在运行时调整日志记录级别,可以使用http://www.grails.org/plugin/runtime-logging插件。这允许您增加日志记录以跟踪仅在生产中发生的问题。错误分析后,您可以将日志记录级别还原到正常级别。

如果您的用例需要大量日志记录(例如出于审计跟踪原因等),您应该使用单独的光盘进行日志记录或登录某些专用远程设备。

答案 3 :(得分:1)

如前所述,如果您将大量信息记录到文件中,它可能会影响性能。 我建议你做以下事情:

  1. 大多数调试信息都应该包含在if (log.debugEnabled) log.debug "This is a debug log line"之类的语句中。请注意if (log.debugEnabled)的用法,如果您不希望即使在生产中评估调试消息,这也很重要
  2. 安装插件app-info。这个插件允许你在运行时更改日志级别(例如从INFO到DEBUG),与运行时日志插件不同,它为您提供了有用的调试(配置属性,内存消耗......)。

答案 4 :(得分:0)

单独记录会带来性能成本。

但是你知道什么可以真正破坏你的应用程序性能吗?控制台记录