Многие системные администраторы и разработчики 1С сталкиваются с ситуацией, когда папка с индексом полнотекстового поиска (обычно это snccntx в серверном варианте или 1Cv8FTxt в файловом) начинает стремительно расти, поглощая десятки и сотни гигабайт дискового пространства. В этой статье мы подробно разберем, почему это происходит, как механизм слияния индексов может привести к коллапсу системы и какие конкретные шаги необходимо предпринять для стабилизации работы сервера.
Для начала проанализируем, как работает механизм полнотекстового поиска (ППД). Система не обновляет основной индекс мгновенно при каждом изменении данных. Вместо этого она создает небольшие дополнительные «порции» индекса. Когда таких порций становится много, запускается процесс слияния (merge). Именно на этом этапе чаще всего возникают проблемы.
Рассмотрим основные причины аномального роста:
rphost), временные файлы могут не удалиться. При следующем запуске задание стартует заново, создавая новые копии данных.Temp и рабочих каталогах.Проанализируем стандартные настройки. По умолчанию обновление индекса и его слияние могут быть настроены слишком агрессивно. Выясним причину: если слияние запускается слишком часто и не успевает завершиться, оно блокирует ресурсы. Рекомендуем разнести эти задачи во времени.
Попробуем изменить расписание:
Если слияние все равно приводит к переполнению диска, рассмотрим радикальный, но действенный метод: отключение автоматического слияния. В этом случае мы будем использовать ручное или программное пересоздание индекса.
Если индекс уже раздулся до неадекватных размеров, попытки «дождаться окончания слияния» обычно бесполезны. Проанализируем ситуацию: проще полностью удалить старые данные и построить индекс с нуля.
Выполним следующие действия в интерфейсе 1С (через «Все функции» или «Функции для технического специалиста»):
snccntx в каталоге базы данных на сервере. Если файлы остались — удалим их вручную при остановленной службе 1С, предварительно выполнив автоматическую очистку серверного кэша.Посмотрим на пример кода, который можно использовать в регламентном задании для автоматической очистки индекса раз в неделю, чтобы избежать накопления ошибок:
// Программная очистка и запуск обновления индекса
ПолнотекстовыйПоиск.ОчиститьИндекс();
ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Ложь);
// Истина - разрешить слияние, Ложь - не порциями
Часто проблема кроется в том, что 1С пытается проиндексировать то, что пользователям искать не нужно. Проанализируем состав метаданных в Конфигураторе, используя отчет по размеру таблиц SQL (удобно через анализ структуры и объема таблиц и индексов информационной базы), чтобы понять, какие объекты занимают больше всего места.
Особое внимание уделим справочникам вида ПрисоединенныеФайлы (поможет перенос присоединенных файлов из базы данных в тома на диске). Если в них хранятся многомегабайтные сканы, их индексация — главная причина роста snccntx. Рекомендуем:
Наименование, Код, Артикул.ХранилищеЗначения убедиться, что поиск по ним выключен.Многие пользователи ошибочно полагают, что этот лимит ограничивает общий размер файлов на диске. Это не так. Выясним истинное значение: данный параметр ограничивает объем текста, извлекаемого из одного конкретного объекта или файла.
Если вы установите лимит 100 МБ, это лишь означает, что 1С не будет читать более 100 МБ текста из одного PDF-файла. Но если таких файлов тысячи, общий индекс все равно будет огромным. Поэтому установка этого лимита в маленькое значение (например, 10 МБ) помогает избежать «зацикливания» на бинарных данных, но не спасает от общего объема информации.
В последних версиях платформы 8.3 (начиная с 8.3.14+) появилась возможность вынести механизм индексации во внешнюю сущность — Сервер поиска. Это наиболее современное и стабильное решение проблемы.
Рассмотрим преимущества этого подхода:
rphost и не занимает место в рабочих каталогах кластера 1С.Для настройки необходимо развернуть дистрибутив «Сервера поиска» и указать его адрес в консоли администрирования кластера 1С.
Если вы не готовы к переходу на Сервер поиска, но системный диск C: постоянно переполняется, воспользуемся системными средствами Windows или Linux. Мы можем физически переместить папку индекса на объемный SSD-накопитель, создав символьную ссылку.
Разберем последовательность действий для Windows:
1C:Enterprise 8.3 Server Agent.C:\Program Files\1cv8\srvinfo\...\snccntx на диск D:\1C_Index\.
mklink /D "C:\Program Files\1cv8\srvinfo\...\snccntx" "D:\1C_Index\"
После запуска службы 1С будет «думать», что файлы находятся на прежнем месте, хотя фактически они будут размещены на другом диске.
Проанализировав ситуацию, мы пришли к выводу, что проблема «раздувания» индекса ППД является комплексной. Если вы столкнулись с ней прямо сейчас, рекомендуем придерживаться следующего алгоритма:
Соблюдение этих правил позволит вам сохранить стабильность системы и избежать внезапных остановок работы из-за нехватки свободного места на сервере.