В процессе эксплуатации крупных информационных баз 1С системные администраторы и разработчики часто сталкиваются с ситуацией, когда регламентное задание «Слияние индекса ППД» (полнотекстового поиска данных) начинает выполняться аномально долго — от нескольких часов до нескольких суток. Эта проблема не только потребляет значительные ресурсы сервера, но и может привести к полной блокировке работы пользователей с поиском. В этой статье мы подробно разберем механику работы ППД, выясним причины зависания и научимся правильно «лечить» систему.
Для того чтобы эффективно решать проблемы с полнотекстовым поиском, сначала проанализируем, как он устроен внутри платформы 1С:Предприятие 8.3. Система ППД использует двухкомпонентную структуру хранения данных:
За поддержание актуальности этих данных (для их мониторинга есть контроль регламентных заданий с уведомлениями в Telegram) отвечают два регламентных задания:
Обновление индекса ППД — собирает измененные объекты и добавляет их в дополнительный индекс (для контроля удобно использовать Консоль регламентных и фоновых заданий).Слияние индекса ППД — берет накопленный объем данных из дополнительного индекса и встраивает его в основной. Именно эта операция требует колоссальных ресурсов дисковой подсистемы и оперативной памяти, поэтому может потребоваться Удобная консоль регламентных и фоновых заданий (Speedy).Рассмотрим типовую ситуацию: администратор решает снизить нагрузку на сервер и меняет расписание задания Обновление индекса ППД с ежеминутного на ежедневное. Это критическая ошибка. За сутки в активной базе (например, Бухгалтерия или ЗУП) накапливаются тысячи измененных объектов.
Когда спустя сутки запускается Слияние индекса ППД, система обнаруживает гигантский объем данных в дополнительном индексе. Процесс слияния превращается в полную перезапись файлов основного индекса объемом в десятки гигабайт. В результате мы получаем «зависшее» задание, которое может выполняться днями, создавая бесконечную очередь операций ввода-вывода (I/O) на диске, в таком случае стоит Анализируем SQL сервер глазами 1С-ника.
Если задание уже выполняется несколько дней, ждать его завершения бессмысленно. Проанализируем, как правильно остановить процесс, не повредив стабильность сервера. Рассмотрим алгоритм действий через консоль «Администрирование серверов 1С:Предприятия» (поможет альтернативная консоль администратора для управления сеансами) или используя Панель Управления Сервисами и Компонентами (ПУСК):
Слияние индекса ППД.Агент сервера 1С:Предприятия или принудительное завершение соответствующего процесса rphost через диспетчер задач ОС (действуйте осторожно, так как это отключит всех пользователей на данном рабочем процессе).После остановки задания старый индекс, скорее всего, находится в неконсистентном или перегруженном состоянии. Проще и быстрее всего очистить его и создать заново. Посмотрим, как это сделать программно через режим «1С:Предприятие»:
Важно отметить: монопольный режим для этой операции не требуется, однако во время очистки и последующего обновления полнотекстовый поиск будет выдавать пустые результаты.
В некоторых случаях файлы индекса блокируются системой на уровне ОС, и кнопка в интерфейсе не срабатывает. Разберем метод ручного удаления:
C:\Program Files\1cv8\srvinfo\<Имя_кластера>\<ID_базы>\1Cv8FTxt.1Cv8FTxt.Для файлового варианта информационной базы путь будет проще: папка 1Cv8FTxt находится непосредственно внутри каталога с базой данных.
Теперь, когда система чиста, необходимо инициировать создание нового индекса. В той же обработке «Управление полнотекстовым поиском» нажмем «Обновить индекс». Первое выполнение может занять продолжительное время, но оно пройдет гораздо эффективнее, чем попытка «дожевать» старые данные.
Рассмотрим правильные настройки расписания (Best Practice), которые помогут избежать проблем в будущем:
Если индекс ППД занимает слишком много места (иногда он сопоставим по размеру с самой БД), проанализируем необходимость поиска по всем объектам. Мы можем значительно облегчить работу системе, если отключим полнотекстовый поиск для «тяжелых» объектов:
Не использовать).Такой подход позволит уменьшить размер основного индекса в разы, что ускорит выполнение регламентного задания Слияние индекса ППД и снизит нагрузку на серверную подсистему хранения.
Подводя итог, можно сказать, что «зависание» слияния индекса — это почти всегда следствие слишком редкого запуска задания на обновление. Соблюдая баланс между частотой актуализации данных и временем проведения регламентных операций, вы обеспечите стабильную и быструю работу механизмов поиска в вашей системе 1С. Для своевременного выявления зависаний и контроля фоновых процессов есть мониторинг ошибок и фоновых заданий в Telegram.