Решить проблемы NFS - PullRequest
       7

Решить проблемы NFS

3 голосов
/ 07 марта 2012

Наше приложение использует встроенный экземпляр Solr для поиска.Каталог данных находится на NFS, и я не могу это изменить.Использование Solr очень просто, есть один поток, который периодически обновляет индекс, и есть несколько потоков чтения - все они находятся внутри одного процесса Java.Никакого другого взаимодействия с Solr не происходит.

При использовании по умолчанию «solrconfig.xml» я иногда сталкиваюсь с «java.nio.channels.OverlappingFileLockException».Насколько я понимаю, причина в том, что «SimpleFSLockFactory» не работает правильно с NFS.

Вопросы:

  1. Учитывая сценарий приложения, описанный выше (без одновременных изменений индекса), разве NoLockFactory не должно быть достаточно?Есть ли недостатки в использовании NoLockFactory?Если я настраиваю NoLockFactory, я получаю несколько записей в журнале ошибок, в которых говорится, что «ПРЕДУПРЕЖДЕНИЕ КОНФИГУРАЦИИ: блокировки отключены».Почему это сообщение попадает в журнал ошибок?Это действительно считается ошибкой и почему?

  2. Может быть, есть лучшее решение, чем использование "NoLockFactory"?

  3. Не уверен, что это связанов NFS, но иногда (довольно редко) мой индекс поврежден, и я получаю много «java.io.FileNotFoundException: _i.fdx» при попытке обновить индекс.Нет другого выхода, кроме как вручную удалить весь каталог индекса и начать с нуля.Почему это может произойти, и есть ли какой-нибудь изящный способ автоматического обнаружения поврежденного индекса и восстановления?

1 Ответ

6 голосов
/ 07 марта 2012

Хранение ваших индексов по NFS склонно к проблемам, но если на было для запуска по NFS, я предсказываю, что эта проблема возникает, возможно, из-за того, что вы не используете NFSv4 или не используете его правильно.NFSv4 является первой версией, поддерживающей блокирующие байтовые диапазоны , NFSv2 и v3 (плохо) поддерживают целые файлы, и без запуска portmap, rpc.lockd и rpc.statd - блокировки, вероятно, только рекомендательные (в отличие отк обязательному), но определенно не будет охватываться блокировкой байтового диапазона.

java.nio.channels.OverlappingFileLockException говорит

Unchecked exception thrown when an attempt is made to acquire a lock on a region of a file 
that overlaps a region already locked by the same Java virtual machine, or when another 
thread is already waiting to lock an overlapping region of the same file.

Беглый поисксписок рассылки Lucene возвращает множество результатов, которые, по-видимому, указывают на то, что использование Lucene (и, соответственно, Solr) поверх NFS является плохой идеей .

Если не учитывать проблемы с блокировкой, производительность, вероятно, будеттоже неплохо.

Я знаю, что это не тот ответ, на который вы надеялись, но это тот ответ, который вам нужен.

...