1С “тормозит”: поиск и варианты решения проблем Экстрактора 1С

В некоторых случаях может казаться, что 1С “тормозит” из-за Экстрактора 1С. В данной статье рассмотрены некоторые методы поиска проблем Экстрактора.

В Экстракторе 1С влиять на производительность предположительно может работа двух функций:

  • “Выгрузка данных”;

  • “Регистрация изменений”.

Рассмотрим варианты решения проблемы производительности в обоих случаях.

Стоит отметить, что измерять производительность, основываясь на субъективных оценочных суждениях — не лучший вариант. Рекомендуем для оценки производительности использовать методики 1С, например:

Другой вариант измерения производительности, который менее предпочтителен — это запустить массовое проведение проблемных документов (например, запись проблемного справочника):

  • До регистрации изменений (о них в разделе ниже);

  • После подключения регистрации изменений.

Желательно, при этом работать на копии базы 1С, чтобы исключить непредсказуемое влияние пользователей в рабочей базе, а также перегружая сервер 1С, чтобы очистить кэш.

Производительность при выгрузке данных и оптимизация

Снижение скорости работы 1С возможно в обоих случаях, но при выгрузке данных снижение производительности 1С будет заметно только в моменты, когда запустилось регламентное задание с выгрузкой того или иного “Проекта”. Данный вариант снижения производительности отслеживается достаточно легко.

Если 1С начинает “тормозить”, когда выполняется регламентное задание Экстрактора 1С, рекомендуем сделать оптимизацию настроек, для этого:

  • в поле “Обрабатывать записей в очереди за один запуск, не более:” установите некое количество (по умолчанию установлено 0, т.е. за одну выгрузку обрабатывается вся накопленная очередь);

  • в поле “Максимальное количество элементов очереди в одной выгрузке:” установите 1или 0;

  • в поле “Максимальное количество потоков:” установите не более 4 (а лучше, менее 4);

  • проверьте, что параллельно, в один и тот же момент времени, у Вас не запускается много “Проектов”.

Если вышеописанный способ не помог, то рекомендуем сделать оптимизацию запроса 1С.

Примечание

Данный вариант актуален в случае, если в качестве “Источника” Вы используете “Запрос 1С”.

Для оптимизации запроса 1С:

  • уберите группировки и сортировки в этом запросе;

  • уберите отсылки и конструкции “Построителя отчетов”;

  • обдумайте сегментацию и сделайте сегмент выгрузки меньше.

Производительность при регистрации изменений и оптимизация

Экстрактор 1С позволяет отслеживать изменения в 1С и выгружать их. Регистрация изменений осуществляется с помощью функционала “Подписки на события”.

Подписки на события “по умолчанию” отслеживают следующие изменения:

  • изменения во всех справочниках;

  • изменения во всех документах;

  • изменения во всех регистрах;

  • изменения во всех планах видов характеристик;

  • изменения в планах счетов, субконто и т.д.

И регистрируют их во встроенном в Экстрактор 1С регистре сведений “Очередь изменений”.

Данный подход для некоторых баз может приводить к повышенной нагрузке на 1С.

Решением, в данном случае, является использования “Генератора подписок”, который позволяет отметить только те объекты, которые действительно необходимо отслеживать в подписках, тем самым снижая нагрузку на 1С.

Однако, для некоторых баз (особенно для баз свыше 1000 пользователей) “узким” местом может стать именно момент “записи” в регистр сведений “Очередь изменений”. Решением является переключение регистрации изменений во внешнюю СУБД Redis.

Redis (а также Apache Ignite) - это специализированная база данных “ключ-значение”, которая часто используется в высоконагруженных проектах для кеширования данных.

Для переключения регистрации изменений во внешнюю СУБД Redis произведите настройку сервиса по статье Внешняя очередь регистрации изменений на Redis, затем, в Экстракторе 1С, в разделе “Настройки” пропишите адрес http_redis.

После чего, вся очередь изменений будет собираться не в регистре сведений “Очередь изменений”, а в СУБД Redis.

В целом, алгоритм поиска решения данной проблемы выглядит так: