Назад | Перейти на главную страницу

«Полнотекстовый индекс для этой базы данных используется» на виртуальном сервере, а не на выделенном сервере

Наш производственный сервер Domino был 32-битным сервером Windows 2003, где ОС, программные файлы и данные Domino находились на разных дисках. Я не помню, чтобы когда-либо видел эту ошибку на этом сервере:

NotesException: ошибка Notes: используется полнотекстовый индекс для этой базы данных

После того, как мы перешли на 64-битный виртуальный сервер Windows 2008 только с диском C:, мы часто видели эту ошибку.

Сегодня я сделал тест, на котором впервые сгенерировал 4000 довольно больших документов. Затем я запустил этот код SSJS XPage:

for (var i = 0; i < 300; i++) {
    print("FT");
    database.FTSearch("[Form]=Test");
    java.lang.Thread.sleep(100);
}

Пока выполнялся приведенный выше код, я запускаю это:

print("START indexing");
database.updateFTIndex(true);
print("END indexing");

Я проделал это два раза на обоих серверах. На 32-битном выделенном сервере ошибок не было. Индексирование заняло 4 секунды, и было выполнено 32 поиска FT, пока индексирование продолжалось.

На 64-битном виртуальном сервере оба раза после печати «НАЧАТЬ индексирование» выполнялся поиск только 1 FT, и после этого я получал ошибку. Все эти 3 вещи происходят в одну и ту же секунду (начало индексации, один поиск FT и ошибка).

Оба сервера Domino имеют версию 9. На виртуальном сервере доступно более 10 ГБ (размер индекса FT в тестовой базе данных составляет 10 МБ).

Единственная причина этой разницы, о которой я могу думать, заключается в том, что индексатор FT использует другие диски на выделенном сервере для индексации, и из-за этого там не возникает ошибки. Это правильно, и есть ли на это документация?

Мы не используем FTBasePath параметр notes.ini.

Наличие ОС, программных файлов и данных Domino на одном диске может / будет проблемой для производительности, но не должно вызывать проблемы, которые вы наблюдаете.

Поскольку производственный сервер, по-видимому, был переведен на новую платформу,

  1. Удалите все индексы FT (удалите каталоги .ft) и заново создайте все индексы FT на новом компьютере. Остановите сервер, удалив каталог .ft всей соответствующей базы данных, снова запустите сервер и заново создайте индекс FT для этих баз данных.
  2. Убедитесь, что все пути ... в файле notes.ini на сервере верны
  3. Update_Fulltext_Thread = 1 установлен?

Кроме того, убедитесь, что никакие сканеры вирусов ... не обращаются к файлам FT, как прокомментировал Саймон.

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

Результатом было 14 раундов исключения на выделенном сервере и 12 на виртуальном сервере. Возможно, при первом тестировании на виртуальном сервере была какая-то нагрузка. Время ожидания 100 мс слишком велико, чтобы вызвать исключение на выделенном сервере.

Так что, к сожалению, это исключение возникает всегда на короткий момент, когда начинается полнотекстовая индексация. На виртуальном сервере, где другие виртуальные серверы используют ту же RAID-систему, дисковые операции иногда могут быть медленными, что приводит к увеличению времени занятости индекса FT.