我想使用 Java WatchService
来监听大量目录(数十万个)上的更改,但我不知道它是否适合如此数量的监视目录。
有没有人有使用如此多目录WatchService
的经验?
如果有帮助,该WatchService
将在带有 EXT4 文件系统的 CentOS 6.5 上使用。
谢谢米凯尔
这种情况在 IDE 中相当常见。 他们经常对复杂的目录结构和数千个文件中的许多文件使用目录监视。
有两点需要注意:
- 在 Linux 上,您通常需要调整操作系统以监视如此多的文件。 https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit
为了防止这种情况,建议增加手表限制(例如,512K)。您可以通过将以下行添加到/etc/sysctl.conf 文件来做到这一点:
fs.inotify.max_user_watches = 524288
此示例调整系统以监视 512k 文件。
- 如果您有HDD,它不会使其旋转得更快,并且很可能会达到80 - 120 IOPS(每秒IO),这比您希望的更有可能成为性能瓶颈。
像Java中的许多IO操作一样,它是围绕实际由操作系统实现的设施的包装器。