【问题标题】:java logging : multiple small file vs one bigjava日志记录:多个小文件与一个大文件
【发布时间】:2011-02-12 22:05:12
【问题描述】:

在 Unix 上使用 log4j,Appender 在写入 1000Meg 时表现最好:

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

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

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

谢谢

【问题讨论】:

  • 大小确实很重要,但在这种情况下,您是在追加而不是读取文件,因此即使是碎片也不是问题。
  • 我认为这在很大程度上取决于用于查看日志的工具以及哪种设置更易于维护——日志“写入”本身的性能可能只是次要考虑因素(请参阅 bestsss 的评论)尽管要记住不要用完磁盘 :-) 分成一天或一周或诸如此类可能是有意义的——与文件大小无关。
  • @pst,我的最爱。工具被称为“少”:)

标签: java performance unix logging log4j


【解决方案1】:

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

实现文件滚动行为会产生性能成本。附加程序必须:

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

我的直觉是,这不太可能很重要。 (但是,值得测量看看是否应该关注性能影响。此外,您可能应该问自己是否进行太多日志记录。)

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 1970-01-01
        • 2012-04-23
        • 2011-06-12
        • 2014-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        相关资源
        最近更新 更多