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

Performance 记录许多堆栈跟踪有多糟糕?,performance,node.js,logging,log4j,Performance,Node.js,Logging,Log4j,日志文件中有许多StackTrace不是很糟糕吗 我的意思是,你可以看到什么地方出了问题——你可以看到它是从哪里来的 但是性能呢?对于使用这种日志格式的应用程序来说,情况有多糟 在普通记录器中,如何在有无堆栈跟踪的日志之间切换系统?通过日志级别?通常最好在日志文件中有堆栈跟踪,这样更容易找到问题代码 如果您只对stacktrace生成的性能感兴趣,那么我已经写了一篇关于Java中抛出异常需要多长时间的文章。大部分时间被堆栈跟踪生成占用: 我可以假设您所说的堆栈跟踪是在挂钟时间中断时触发的吗? 这

日志文件中有许多StackTrace不是很糟糕吗

我的意思是,你可以看到什么地方出了问题——你可以看到它是从哪里来的

但是性能呢?对于使用这种日志格式的应用程序来说,情况有多糟


在普通记录器中,如何在有无堆栈跟踪的日志之间切换系统?通过日志级别?

通常最好在日志文件中有堆栈跟踪,这样更容易找到问题代码

如果您只对stacktrace生成的性能感兴趣,那么我已经写了一篇关于Java中抛出异常需要多长时间的文章。大部分时间被堆栈跟踪生成占用:

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

然而,只有当你能检查它们时,它们才有价值,而你不能检查数以百万计的它们,因此,以接近高频的频率获取它们是没有价值的。 几乎任何大到值得修复的性能问题都可以在20个或更少的堆栈样本中找到,只要它们是在您关心的整个执行阶段随机抽取的。 很多人觉得这个数字令人惊讶,但是

原则上,如果你有一个统计摘要器,你可以使用更多的统计摘要,就像剖析器一样,
但实际上,你可以手动做得更好,因为你的大脑比任何统计数据都能更好地识别浪费的处理。

最好记录错误的堆栈跟踪,否则你就不知道发生了什么。