Tomcat server.xml中的调试级别(0-99)如何影响速度?

时间:2020-03-06 14:26:04  来源:igfitidea点击:

控制Apache Tomcat的Servlet容器启动的server.xml包含几乎每个主要组件的调试属性。 debug属性或者多或者少是冗长的,具体取决于我们提供的数字,零是最小的,而99是最详细的。为大量用户提供服务时,调试级别如何影响Tomcat的速度?我假设零是快速的,而99是相对较慢的,但这是真的。如果没有抛出任何错误,那有关系吗?

解决方案

大量日志记录需要大量时间。这就是为什么放这么重要

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

因此,我要说的是,将生产服务器设置为冗长会严重影响性能。我认为这是我们正在谈论的生产服务器,因为我们说它必须为大量用户提供服务。

记录不仅负责给我们带来错误,而且还负责跟踪正在发生的事情。在某些情况下,代码无法在调试器中运行,因此日志记录是我们唯一的选择。

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

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

对于我们自己的应用程序,使用探查器或者仅进行一些压力测试来衡量日志记录成本。无论我们得到什么结果,我都建议不要在生产环境中运行具有高日志级别设置的应用程序。我当前的项目在TRACE设置下每个请求转储大约1兆字节,在INFO上大约只有3到4行,而在WARNING上则没有任何内容(如果一切顺利:-)。我建议不要超过最必要的日志记录。应用实际上应该只报告启动,关闭和失败,每个请求最多报告一行。