4

控制 Apache Tomcat 的 servlet 容器启动的 server.xml 包含几乎每个主要组件的调试属性。debug 属性的详细程度取决于您给它的数字,0 表示最少,99 表示最详细。为大量用户提供服务时,调试级别如何影响 Tomcat 的速度?我假设零速度很快,而 99 相对较慢,但这是真的吗?如果没有抛出错误,这有关系吗?

4

2 回答 2

2

广泛的日志记录需要大量时间。这就是为什么放置如此重要的原因

if (log.isDebugEnabled())
  log.debug(bla_bla_bla);

所以我想说将生产服务器设置为详细会严重影响性能。我假设它是您正在谈论的生产服务器,因为您说它必须为大量用户提供服务。

于 2008-09-19T14:44:30.610 回答
2

日志不仅负责给您错误,还负责跟踪正在发生的事情。在某些情况下,代码无法在调试器中运行,那么日志记录是您唯一的选择。

这就是日志输出可能非常冗长的原因。我真的是这个意思。我记得有一次将 Catalina 的日志级别设置为 TRACE,最后得到了几兆字节的日志文件。那是服务器收到任何点击之前。这是一个巨大的性能猪。数秒内可数。

如果您不需要 Tomcat 本身的日志记录,请不要在其任何组件上激活它。如果您怀疑您的设置或 Tomcat 本身存在错误,您通常只想修改 Tomcat 的日志级别。

对于您自己的应用程序,使用分析器或仅进行一些压力测试来测量日志记录成本。无论您的结果如何,我都建议您不要在生产环境中运行具有高日志级别设置的应用程序。我当前的项目在 TRACE 设置下每个请求转储大约 1 MB ,在 INFO 上只有大约三到四行,在 WARNING 上没有任何内容(如果一切顺利:-)。我建议不要超过最必要的日志记录。您的应用程序实际上应该只报告启动、关闭和故障,并且每个请求最多只报告一行。

于 2008-09-19T17:41:17.470 回答