Java 多目录下的WatchService性能

Java 多目录下的WatchService性能,java,performance,watchservice,Java,Performance,Watchservice,我想使用JavaWatchService来监听大量目录(数十万个)上的更改,但我不知道它是否适用于这些数量的被监视目录 有没有人有过WatchService这样多目录的经验 如果有帮助,WatchService将在带有EXT4文件系统的CentOS 6.5上使用 谢谢, 米克尔这种情况在IDE中相当常见。他们经常使用目录监视复杂的目录结构和成千上万的文件 有两件事需要注意: 在Linux上,您经常需要调整操作系统以监视如此多的文件 为了防止这种情况,建议增加手表的限制(例如,512K)。可以

我想使用Java
WatchService
来监听大量目录(数十万个)上的更改,但我不知道它是否适用于这些数量的被监视目录

有没有人有过
WatchService
这样多目录的经验

如果有帮助,
WatchService
将在带有EXT4文件系统的CentOS 6.5上使用

谢谢,
米克尔

这种情况在IDE中相当常见。他们经常使用目录监视复杂的目录结构和成千上万的文件

有两件事需要注意:

  • 在Linux上,您经常需要调整操作系统以监视如此多的文件
为了防止这种情况,建议增加手表的限制(例如,512K)。可以通过在/etc/sysctl.conf文件中添加以下行来完成此操作:

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

  • 如果你有一个硬盘,它不会使它转得更快,而且很可能会产生80-120 IOPS(IO/秒),这很可能是一个性能瓶颈,而不是你想要的

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

只是好奇:这有什么用?为什么有这么多dir?该应用程序将用于监视Asterisk创建的语音邮件目录。Asterisk有多个后端来存储语音邮件:文件系统、ODBC和IMAP。我担心ODBC的性能,所以我想我应该使用文件系统后端。你有没有检查一些星号api,它可能会为此提供事件?应该有一些东西,我需要检查一下。然而,我仍然有兴趣了解WatchService处理大量被监视目录的能力。
    fs.inotify.max_user_watches = 524288