Наш производственный сервер 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 на одном диске может / будет проблемой для производительности, но не должно вызывать проблемы, которые вы наблюдаете.
Поскольку производственный сервер, по-видимому, был переведен на новую платформу,
Кроме того, убедитесь, что никакие сканеры вирусов ... не обращаются к файлам FT, как прокомментировал Саймон.
Я уменьшил время ожидания между поисками FT до 10 мс и добавил обработку исключений, чтобы поиск FT выполнялся снова через 10 мс после исключения.
Результатом было 14 раундов исключения на выделенном сервере и 12 на виртуальном сервере. Возможно, при первом тестировании на виртуальном сервере была какая-то нагрузка. Время ожидания 100 мс слишком велико, чтобы вызвать исключение на выделенном сервере.
Так что, к сожалению, это исключение возникает всегда на короткий момент, когда начинается полнотекстовая индексация. На виртуальном сервере, где другие виртуальные серверы используют ту же RAID-систему, дисковые операции иногда могут быть медленными, что приводит к увеличению времени занятости индекса FT.