Мы часто сталкиваемся с ситуацией, когда после обновления платформы или конфигурации 1С, привычные операции начинают вести себя иначе, а порой и вовсе приводят к «зависаниям» программы. Один из таких распространенных сценариев – зависание при попытке обновления индекса полнотекстового поиска (ППД). В данном материале мы подробно разберем, почему возникает эта проблема, и какие шаги можно предпринять для ее эффективного решения.
Исходная ситуация, описанная в нашем случае, заключается в следующем: после обновления платформы 1С до версии 8.2.16.363 и конфигурации УТ 11.0.9.9, при попытке найти товар по артикулу, система предлагает обновить индекс полнотекстового поиска. При нажатии «ОК» программа «зависает», не реагируя на действия пользователя в течение длительного времени, тогда как ранее аналогичная операция занимала всего 15-30 секунд. Эта проблема наблюдается у нескольких пользователей и явно связана с изменениями после обновления.
Прежде чем мы перейдем к конкретным решениям, давайте углубимся в то, как работает полнотекстовый поиск в 1С и почему его обновление может быть столь ресурсоемкой операцией. Полнотекстовый поиск данных (ППД) – это мощный инструмент, позволяющий находить информацию в базе данных не только по конкретным полям, но и по содержимому присоединенных файлов, обеспечивая гибкий и всеобъемлющий поиск. Однако его работа сопряжена с определенными особенностями, которые могут приводить к замедлениям и зависаниям.
Ресурсоемкость операции. Обновление индекса полнотекстового поиска является одной из самых требовательных к ресурсам задач в 1С. Оно может потреблять значительный объем оперативной памяти, что при ее нехватке на сервере или клиентской машине приводит к нестабильной работе программы и зависаниям для всех пользователей. Кроме оперативной памяти, активно задействуются процессор и дисковая подсистема (особенно важна скорость работы с диском, предпочтительны SSD-накопители).
Увеличение объема данных. Логично предположить, что чем больше данных хранится в вашей информационной базе, тем дольше и более ресурсозатратно будет происходить обновление индекса. Новые версии конфигураций или активное ведение учета могут значительно увеличить объем индексируемых данных.
Устаревший или поврежденный индекс. Очень часто причиной зависаний является некорректное состояние самого индекса. Индекс полнотекстового поиска может быть поврежден из-за внезапных перезагрузок сервера, сбоев в работе СУБД или ошибок в процессе его предыдущих обновлений. При обращении к такому индексу программа может зависать, пытаясь обработать некорректные данные.
Изменения в платформе или конфигурации. После обновлений платформы или конфигурации 1С функциональность ППД может перестать работать корректно. Это связано с изменениями в структуре индексов, параметрах настройки или несовместимостью версий. Например, новая версия конфигурации могла начать индексировать гораздо больше реквизитов, чем раньше, что значительно увеличивает объем индексируемых данных и, как следствие, время обновления. Для обслуживания и поддержки актуальности систем при работе с несколькими базами удобно запускать автоматическое архивирование, обновление и тестирование конфигураций 1С по расписанию в фоновом режиме.
Особенности работы слияния индексов. Мы должны понимать, что полнотекстовый поиск использует два типа индексов:
Процесс индексирования включает чтение файлов регистрации изменений, получение измененных объектов из базы данных, транслитерацию слов и замещение букв. Основные зависания могут происходить именно во время операции слияния индексов, которая добавляет результаты последних изменений из дополнительного индекса к основному. Эта операция может быть очень длительной при большом размере основного индекса, создавая пиковые нагрузки на систему.
Блокировки. Иногда причиной зависания может быть блокировка соединения с индексом, препятствующая его нормальному обновлению.
Индексированию подлежат реквизиты типов: строка, дата, число, ссылочные типы, хранилище значения. Для каждого объекта и реквизита в полнотекстовый индекс добавляется имя, синоним и представление объекта/реквизита на всех языках конфигурации.
Как мы уже выяснили, одной из частых причин зависаний является повреждение или некорректное состояние индекса. В этом случае наиболее радикальным и часто самым эффективным решением является его полная очистка и перестроение с нуля. Это сравнимо с полной переустановкой программного обеспечения, когда мы хотим избавиться от накопившихся ошибок.
Разберем по шагам, как выполнить эту операцию:
Администрирование.Поддержка и обслуживание.Управление полнотекстовым поиском. Мы увидим настройки, связанные с ППД.После успешного завершения обновления индекса, попробуйте выполнить поиск по артикулу или любой другой полнотекстовый поиск. Вероятно, проблема с зависанием будет решена, и поиск снова будет работать быстро и корректно. Если обновление индекса все равно завершается быстро и проблема возвращается, это может указывать на слишком частые изменения или специфические настройки. Помните, что первое построение индекса после очистки всегда будет самым долгим.
Если обновление индекса все равно занимает много времени, или мы хотим избежать ручного запуска и диалоговых окон, появляющихся в процессе работы, оптимальным решением является настройка регламентных заданий. Это позволит выполнять обновление индекса в фоновом режиме, обычно в нерабочее время, минимизируя влияние на производительность системы в часы пик.
Важное уточнение: работа регламентных заданий существенно отличается для файлового и клиент-серверного вариантов базы данных. В клиент-серверном варианте регламентные задания выполняются на сервере 1С:Предприятия независимо от наличия активных пользовательских сеансов. В файловом варианте базы регламентные задания будут выполняться только при наличии хотя бы одного запущенного клиентского сеанса, который периодически вызывает выполнение заданий. Для гарантированной работы в файловом режиме требуется постоянно запущенный сеанс или специальная обработка, имитирующая его.
Рассмотрим, как настроить регламентные задания в конфигурации 1С:Управление торговлей 11:
Администрирование.Поддержка и обслуживание.Регламентные и фоновые задания.ОбновлениеИндексаППД. Убедитесь, что оно включено.Как упоминалось в сообщении 20 и дополнительной информации, для больших и высоконагруженных баз рекомендуется разделять процесс обновления индекса на два отдельных регламентных задания:
ОбновлениеИндексаППД). Это задание должно отвечать за актуализацию дополнительного (временного) индекса, который содержит последние изменения. Поскольку этот процесс относительно быстрый, его можно настроить на более частый запуск, например, раз в минуту или раз в 10 минут. Это позволит поддерживать актуальность индекса без значительной нагрузки.СлияниеИндексаППД). Это задание объединяет данные из временного индекса с основным индексом. Как мы знаем, операция слияния является самой ресурсоемкой. Поэтому ее лучше выполнять реже, например, раз в сутки, в нерабочее время (ночью), когда нагрузка на систему минимальна.Такой подход позволяет распределить нагрузку более равномерно в течение дня, исключая пиковые зависания в рабочее время и поддерживая актуальность поиска. В некоторых конфигурациях 1С для работы с регламентными заданиями может быть полезна внешняя обработка КонсольЗаданий, которая позволяет более гибко управлять расписаниями и мониторить выполнение заданий.
Если мы обнаружили, что индекс стал слишком большим или обновление занимает неоправданно много времени, возможно, проблема кроется в том, что индексируется слишком много ненужных данных. Мы можем выборочно отключить полнотекстовый поиск для тех объектов метаданных или их реквизитов, которые не требуются для поиска.
Как мы можем это сделать:
Такая выборочная индексация значительно уменьшит объем индексируемых данных, что приведет к снижению нагрузки на систему, ускорению процессов обновления индекса и уменьшению его размера. После изменения состава индексируемых данных нам обязательно потребуется очистить и перестроить индекс, как описано в Решении 1, чтобы изменения вступили в силу.
В некоторых случаях, если полнотекстовый поиск не является критически важным функционалом для работы предприятия, или если он вызывает постоянные и неразрешимые проблемы с производительностью, мы можем полностью его отключить. Это может служить как временным решением для восстановления работоспособности системы, так и постоянным, если польза от поиска не перевешивает затраты на его поддержку.
Как отключить полнотекстовый поиск:
Администрирование.Поддержка и обслуживание.Управление полнотекстовым поиском.После отключения полнотекстового поиска система перестанет его использовать и, соответственно, не будет требовать обновления индекса. Многие пользователи отмечают, что это может повысить общую производительность программы до 10% (сообщение 14, 19). Важно отметить, что даже при отключенном полнотекстовом поиске, функции поиска по артикулам или кодам, которые реализованы стандартными средствами 1С (через формы подбора, по полям справочников), будут продолжать работать.
Помимо основных решений, есть ряд дополнительных аспектов, которые мы должны учитывать для обеспечения стабильной работы полнотекстового поиска и 1С в целом:
Аппаратные ресурсы. Мы уже упоминали об этом, но повторим: адекватные аппаратные ресурсы – это фундамент. Увеличение объема оперативной памяти может быть критически необходимым, особенно в момент слияния таблиц индексов. Производительность также сильно зависит от мощности процессора и, что особенно важно, от скорости дисковой подсистемы. Использование SSD-накопителей вместо HDD значительно ускоряет операции с индексом.
Версия платформы 1С. Версия платформы и режим совместимости сильно влияют на работу ППД. На старых версиях он может работать некорректно или вообще не работать. 1С постоянно выпускает оптимизации. Например, значительные оптимизации потребления оперативной памяти полнотекстовым поиском были реализованы в версии 8.3.25. Для полного преимущества от новых оптимизаций может потребоваться перестроить индекс новой версией платформы.
Переход на версию 2 полнотекстового поиска. Для больших и высоконагруженных баз мы можем рассмотреть переход на версию 2 ППД, если она доступна в нашей платформе. Это более современный механизм, который кардинально упрощает администрирование: обновление индекса происходит постепенно по мере поступления изменений, нагрузка на систему распределяется равномерно в течение дня, что исключает пиковые нагрузки. Переход на версию 2 ППД и обратно осуществляется в монопольном режиме. Для быстрого изменения версии ППД в информационной базе можно использовать обработку для смены версии полнотекстового поиска.
Проверка целостности базы данных. «Битые» ссылки, нарушение ссылочной или логической целостности объектов могут вызывать проблемы не только с поиском, но и с общей работой 1С. Мы рекомендуем регулярно использовать встроенный механизм конфигуратора Тестирование и исправление для восстановления целостности информационной базы. Запускать его следует в монопольном режиме, предварительно сделав резервную копию.
Перезапуск сервера 1С. Если мы работаем в клиент-серверном варианте и есть подозрение, что зависло соединение с блокировкой индекса, простой перезапуск сервера 1С:Предприятия или его служб может помочь сбросить эти блокировки и восстановить нормальную работу.
Мониторинг. Регулярный контроль состояния индекса и производительности системы поможет нам заблаговременно выявлять потенциальные проблемы и принимать меры до того, как они приведут к критическим зависаниям.
Обращение к специалисту. Если после всех предпринятых действий проблема не решается, или мы сталкиваемся с очень сложной и специфической ситуацией, для точной диагностики и оптимизации ППД рекомендуется обратиться к квалифицированному специалисту по 1С.
Мы выяснили, что зависания при обновлении полнотекстового индекса в 1С часто обусловлены его повреждением или значительным увеличением объема данных после обновлений. Наиболее эффективным первым шагом является очистка и перестроение индекса. Для долгосрочного решения мы можем настроить регламентные задания, разделив обновление временного индекса и ресурсоемкое слияние основного индекса. В крайнем случае, или при отсутствии критической необходимости в полнотекстовом поиске, его можно полностью отключить. Помните также о важности адекватных аппаратных ресурсов и актуальной версии платформы. Выбирая подходящее решение или комбинацию решений, мы сможем обеспечить стабильную и быструю работу нашей системы 1С.