【问题标题】:WatchService performance with many directoriesWatchService 性能与许多目录
【发布时间】:2014-12-14 09:37:52
【问题描述】:

我想使用 Java WatchService 来监听大量目录(数十万)的变化,但我不知道它是否适合如此数量的监视目录。

有没有人有使用WatchService 处理这么多目录的经验?

如果有帮助,WatchService 将用于具有 EXT4 文件系统的 CentOS 6.5。

谢谢, 迈克尔

【问题讨论】:

  • 只是好奇:它的应用是什么?为什么这么多目录?
  • 该应用程序将用于监控由 Asterisk 创建的语音邮件目录。 Asterisk 有多个后端来存储语音邮件:文件系统、ODBC 和 IMAP。我担心 ODBC 性能,所以我认为我应该使用文件系统后端。
  • 您是否检查了一些可能为此提供事件的星号 API?
  • 应该有什么,我需要检查一下。但是,我仍然有兴趣了解 WatchService 处理大量监视目录的能力。

标签: java performance watchservice


【解决方案1】:

这种情况对于 IDE 来说相当普遍。他们经常对复杂的目录结构和成千上万的文件使用目录监视。

有两点需要注意:

为防止出现这种情况,建议增加手表限制(例如,512K)。您可以通过在 /etc/sysctl.conf 文件中添加以下行来实现:

    fs.inotify.max_user_watches = 524288

此示例调整系统以监控 512k 文件。

  • 如果您有 HDD,它不会使其旋转得更快,而且很可能会达到 80 - 120 IOPS(每秒 IO),这很可能是一个性能瓶颈,超出您的想象。

与 Java 中的许多 IO 操作一样,它是由操作系统实际实现的工具的包装器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    相关资源
    最近更新 更多