2014-12-14 2 views
5

Я хочу использовать Java WatchService для прослушивания изменений в большом количестве каталогов (многие сотни тысяч), но я не знаю, подходит ли это для таких количеств просмотренных каталогов.Производительность WatchService со многими каталогами

Есть ли у кого-нибудь опыт работы с WatchService с таким количеством каталогов?

Если это помогает, WatchService будет использоваться на CentOS 6.5 с файловой системой EXT4.

Спасибо, Микаэль

+0

Просто интересно: что это такое? Почему так много компаний? – Fildor

+0

Приложение будет использоваться для мониторинга каталогов голосовой почты, созданных Asterisk. Asterisk имеет несколько бэкэндов для хранения голосовой почты: файловой системы, ODBC и IMAP. Я боюсь за производительность ODBC, поэтому я решил использовать бэкэнд файловой системы. –

+0

Вы проверили наличие какой-либо звездочки api, которая может быть связана с этим событием? – Fildor

ответ

3

Эта ситуация является довольно распространенным явлением для Иды. Они часто используют просмотр каталогов для сложных структур каталогов и много десятков тысяч файлов.

Существует две вещи, чтобы отметить:

Для предотвращения этой ситуации рекомендуется увеличить лимит часы (до, скажем, 512K). Вы можете сделать это, добавив следующую строку в файл /etc/sysctl.conf:

fs.inotify.max_user_watches = 524288 

Этот пример настраивает систему мониторинга 512K файлов.

  • Если у вас есть жесткий диск, он не будет делать это вращаться быстрее, и это, скорее всего, делает 80 - 120 IOPS (IO в секунду), и это более вероятно, будет узким местом, чем вам хотелось бы.

Как и многие операции ввода-вывода в Java, это оболочка вокруг объекта, который фактически реализуется ОС.

Смежные вопросы