Почему тормозит хранилище конфигурации 1С и как ускорить его работу?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с хранилищем конфигурации 1С разработчики нередко сталкиваются с ситуацией, когда операции получения или помещения объектов (особенно требующих реструктуризации) начинают сильно зависать. При этом задержка происходит еще на этапе формирования снимков метаданных и сравнения ревизий, а не при применении изменений к информационной базе. Проанализируем, почему возникает такая проблема и как восстановить нормальную скорость работы.

Выясним причины замедления работы хранилища

Хранилище конфигурации 1С по своей сути представляет собой специфическую файловую базу данных (файл 1Cv8.1cd). Все операции по вычислению различий между версиями, сборке снимков метаданных и сравнению объектов выполняются синхронно на стороне клиента — то есть на рабочем ПК программиста. Выделим ключевые факторы, из-за которых происходят задержки:

  1. Разрастание и повреждение локальной базы кэша хранилища (cfgrepo): Помимо обычного пользовательского кэша платформы, 1С создает отдельную локальную базу хранилища. При накоплении ошибок или большом объеме метаданных локальный кэш начинает «тормозить» операции сравнения.
  2. Сетевые блокировки при файловом доступе (SMB): Если хранилище подключено через обычную сетевую папку (\\server\share\repo), протокол SMB совершает тысячи мелких синхронных файловых операций и блокировок, что приводит к экспоненциальному падению скорости при малейших сетевых задержках.
  3. Влияние антивирусного ПО и средств защиты (EDR): Антивирусы (например, Kaspersky) сканируют каждый открываемый и создаваемый файл базы хранилища и временного каталога %TEMP%, из-за чего файловые операции блокируются на доли секунд, суммарно создавая огромные паузы.
  4. Низкая скорость локального диска: При реструктуризации метаданных платформа 1С активно пишет и читает временные данные с системного диска. Использование медленных HDD вместо SSD существенно снижает производительность.
  5. Накопление истории версий и рассинхронизация: Длительная разработка без очистки истории хранилища или частые динамические обновления приводят к необходимости полного перерасчета графа метаданных при каждом коммите.

Шаг 1. Глубокая очистка локального кэша хранилища

Обычная очистка кэша пользовательского сеанса 1С не затрагивает специализированную базу хранилища cfgrepo. Если операция получения данных зависает, необходимо выполнить глубокую очистку кэша хранилища.

Для автоматической очистки можно запустить конфигуратор через командную строку с соответствующим ключом:


"C:\Program Files\1cv8\8.3.23.1878\bin\1cv8.exe" DESIGNER /F "D:\Bases\MyBase" /ConfigurationRepositoryClearCache

Также можно выполнить процедуру вручную. Разберем порядок действий:

  1. Закроем все запущенные сеансы 1С и конфигуратора.
  2. Перейдем в системную папку локального профиля пользователя по адресу %LOCALAPPDATA%\1C\1Cv8.
  3. Найдем в каталогах с уникальными идентификаторами (GUID) подпапку cfgrepo.
  4. Удалим содержимое папки cfgrepo. Совет: Если необходимо сохранить историю ранее введенных комментариев к помещаемым объектам, внутри cfgrepo можно оставить файл comments, удалив все остальные служебные файлы.

Шаг 2. Переход с файлового доступа на сервер хранилища (TCP)

Размещение хранилища в обычной сетевой папке — главная причина нестабильной работы при коллективной разработке. Для исключения сетевых задержек протокола SMB переведем хранилище на работу через службу crserver (сервер хранилища конфигурации 1С).

Запуск сервиса выполняется с помощью утилиты crserver.exe. Рассмотрим пример команды для запуска сервера хранилища на определенном порту:

crserver.exe -d "C:\RepositoryData" -port 1542

После этого все разработчики подключаются к хранилищу не через файловый путь, а по протоколу TCP:

tcp://server_name:1542/RepoName

Это полностью избавляет клиентские станции от синхронных файловых блокировок по сети и переносит основной обмен на оптимизированный протокол 1С.

Шаг 3. Настройка антивируса и средств защиты

На рабочих станциях программистов и на сервере хранилища необходимо настроить исключения для фонового сканирования файловой системы. Проанализируем, какие пути следует добавить в исключения антивируса:

  1. Каталог с файлами самого хранилища 1С.
  2. Локальные папки кэша 1С: %LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8.
  3. Системный каталог временных файлов %TEMP%.
  4. Исполняемые процессы 1cv8.exe, 1cv8c.exe и crserver.exe.

Шаг 4. Оптимизация сети и системных ресурсов

Если оборудование у разработчиков одинаковое, но скорость работы разная, проанализируем сетевые параметры конкретных рабочих станций:

  1. Проверим протокол IPv6: В некоторых конфигурациях сети включенный IPv6 на сетевом адаптере вызывает задержки при резолве имен. Попробуем временно отключить IPv6 в свойствах сетевого подключения.
  2. Использование SSD: Операции с реструктуризацией метаданных требуют высокой скорости ввода-вывода (IOPS). Размещение профиля пользователя и системных временных каталогов на SSD-накопителе — обязательное условие комфортной работы разработчика.

Шаг 5. Полная синхронизация и пересоздание хранилища

Если хранилище существует много лет и накапливает тысячи версий, построение графа изменений становится ресурсоемким. В этом случае выполним следующую процедуру:

  1. Выгрузим актуальную конфигурацию в файл .cf через меню Конфигурация -> Сохранить конфигурацию в файл.
  2. Создадим абсолютно новое чистое хранилище конфигурации.
  3. Подключимся к новому хранилищу и сделаем первоначальное помещение из подготовленного .cf файла.

Это полностью очистит балласт устаревших промежуточных версий и восстановит максимальное производительность при выполнении операций получения и помещения объектов.

← На главную