记录许多堆栈跟踪有多糟糕?

时间:2013-03-09 01:00:41

标签: performance node.js logging log4j log4

在日志文件中有多个堆栈跟踪是不是很糟糕?

我的意思是,你可以看出出现了什么问题 - 你可以看到它来自哪里。

但性能怎么样?具有这种记录格式的应用程序有多糟糕?

如何在普通记录器中使用和不使用堆栈跟踪在日志之间切换系统?通过日志级别?

2 个答案:

答案 0 :(得分:1)

通常最好在日志文件中包含堆栈跟踪 - 找到问题代码会更容易。

如果您只对堆栈跟踪生成性能感兴趣 - 我写了一篇关于在Java中抛出异常需要多长时间的文章。堆栈跟踪生成大部分时间都在消耗: Throwing an exception in Java is very slow

答案 1 :(得分:0)

我可以假设您正在谈论在挂钟时间中断上触发的堆栈跟踪吗? 这些对于定位性能问题很有价值。 (如果它们包含发生调用的行号信息,而不仅仅是函数/方法名称,则它们更有价值。)

然而,它们只有在您检查它们时才有价值,而且您无法检查它们中的数百万,因此将它们带到接近高频率的任何地方都没有价值。 几乎任何足以值得修复的性能问题都可以在20个或更少的堆栈样本中找到,前提是它们是在您关心的整个执行阶段中随机抽取的。 许多人发现这个数字令人惊讶,但here's the math

原则上,如果您有Zoom分析器的统计摘要生成器,则可以使用更多它们, 但你实际上可以手动做得更好,因为你的大脑可以比任何统计数据更好地识别浪费的处理。