大处理批次(10- 12小时)的log4j性能

inb24sb2  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(107)

我想知道是否有人观察到日志文件中的大量日志写入(如果处理4小时,则为300 k行)可能会影响批处理性能。
P1:批处理在日志文件中写入了大量信息,我怀疑如果我们在源代码中删除或注解所有这些日志写入,批处理性能可能会提高,并在执行时间上获得15分钟或更多。
在一次完整的批处理执行(8-12小时)中,我们可能会有一百万行或更多行。
P2:或者数据库检查和日志写入可以并行完成?但是我认为我们的源代码不这样做。

jrcvhitl

jrcvhitl1#

是的,太多的日志确实会影响性能。但是要知道它对性能的影响有多大,唯一的方法就是测量它。
P1:批处理在日志文件中写入了大量信息,我怀疑如果我们在源代码中删除或注解所有这些日志写入,批处理性能可能会提高,并在执行时间上获得15分钟或更多。
没人能告诉你你能获得多少时间。(如果你能获得这么多时间,我会很惊讶,但我可能是错的。测量一下!!)
P2:或者数据库检查和日志写入可以并行完成?但是我认为我们的源代码不这样做。
在应用程序中显式地编写并行日志记录可能不是一个好主意,因为这会使代码复杂得多。有一个更好的方法可以获得一些并行性:请尝试使用异步追加器。
您可以做很多事情来优化日志记录性能,而不必走极端,包括:

  • 切换到其他日志记录库。例如,log4j 2.x应该比log4j 1.2更有效。
  • 不要记录太多。
  • 在适当的级别记录日志,并根据情况调整日志级别。
  • 确保高效地创建日志消息。例如,避免生成复杂的消息字符串,这些字符串由于日志级别而不会被记录。(在log4j 2.x中,使用接受格式字符串的Logger方法。)
  • 避免在你的日志格式/格式化程序中使用昂贵的特性。例如,记录类/方法相对来说是昂贵的。
  • 请尝试使用异步日志追加程序。

有关日志记录性能的一些背景信息,请查看log4j 2 Performance页面。

相关问题