java logging:多个小文件vs一个大

时间:2011-02-12 22:05:13

标签: java performance unix logging log4j

在Unix上使用log4j,Appender会最好地编写1000Meg:

1)使用RollingFileAppender编写10个100 Meg的文件

2)使用FileAppender并编写单个1000Meg文件

换句话说,在unix上使用java,大小是否重要?

谢谢

3 个答案:

答案 0 :(得分:2)

写入小文件或写入大文件之间没有Java端性能差异。当文件变得足够大以至于需要额外级别的索引块(FS依赖)时,可能在操作系统级别是差异,但它可能不值得担心。

实施文件滚动行为会产生性能成本。 appender必须:

  • 测试/记住文件有多大,
  • 关闭当前的那个,
  • 重命名,
  • 打开一个新文件。

我的直觉是,这不太可能是重要的。 (但是,值得衡量以确定性能影响是否应该成为一个问题。此外,您应该问问自己是否没有过多的日志记录。)

您必须将以上所有内容与文件滚动的优势进行比较:

  • 日志文件的大小有限意味着您的日志记录不会填满磁盘,从而导致应用程序以及同一台计算机上的其他应用程序出现问题。
  • 较小的日志文件可以更容易/更快地在特定时间搜索事件。 (在1000Mb文件上运行less可能很痛苦......)

答案 1 :(得分:0)

他们都可以轻松编写1000MB文件。我不明白为什么他们应该表现不同。

您确实需要RollingFileAppender才能设置日志文件可以达到的总最大大小。否则,您可能会耗尽硬盘空间,假设您的应用程序已获得流量。

答案 2 :(得分:-1)

我认为使用小文件比使用大文件更好,因为它们更易于管理。另外,考虑到对于大文件,在文件系统已满的情况下可能会出现问题,因为在进程启动并运行时必须删除日志文件以释放磁盘空间。