Разработка и поддержка крупных систем на базе 1С:ERP Управление предприятием предъявляет высокие требования к производительности оборудования. Одной из самых болезненных проблем для разработчиков является длительное ожидание при обновлении конфигурации базы данных и запуске сеанса отладки. В условиях, когда время цикла «написал код — проверил результат» составляет более 5 минут, эффективность работы команды резко падает. В этой статье мы подробно разберем, почему возникают такие задержки и как можно радикально ускорить тестовый контур, используя настройки программного обеспечения и правильный подбор «железа».
Рассмотрим первопричину медленной работы Конфигуратора. Многие системные администраторы по привычке выделяют для серверов разработки многопроцессорные системы на базе Intel Xeon с большим количеством ядер, но низкой тактовой частотой (например, 2.1–2.4 ГГц). Проанализируем, почему это является ошибкой для задач разработки.
Процессы компиляции кода, реструктуризации таблиц и обновления метаданных в платформе 1С:Предприятие 8.3 являются преимущественно однопоточными. Это означает, что пока одно ядро процессора загружено на 100%, остальные 23 ядра могут простаивать, никак не ускоряя процесс обновления конфигурации. Поэтому прирост скорости будет прямо пропорционален тактовой частоте конкретного ядра.
Выясним разницу на практике. Использование серверных процессоров старых поколений дает результат запуска отладки в районе 4-5 минут. В то же время современные десктопные процессоры (например, серии Intel Core i7 или i9) с частотой 4.5–5.0 ГГц позволяют сократить это время до 30–60 секунд. Если бюджет ограничен, замена текущих процессоров на аналогичные модели Xeon с частотой более 3.3 ГГц даст заметный, но не предельный прирост. Для достижения максимальной эффективности в тестовых контурах рекомендуется использовать «гражданские» процессоры с высоким показателем IPC (инструкций за такт).
Если разработка ведется в терминальном режиме (RDP), часто можно столкнуться с необъяснимыми «тормозами» интерфейса и замедлением дисковых операций. Разберем механизм, который часто мешает нормальной работе 1С на терминальных серверах — Dynamic Fair Share Scheduling (DFSS).
Эта технология встроена в Windows Server для того, чтобы один пользователь не мог монополизировать ресурсы процессора, диска или сети, мешая остальным. Однако для разработчика 1С, чьи задачи (обновление конфигурации) требуют кратковременного, но максимального потребления ресурсов, эта служба становится врагом. Она начинает искусственно ограничивать ресурсы процесса 1cv8.exe, растягивая обновление на лишние минуты.
Проанализируем ситуацию: отключение приоритезации ресурсов (Fair Share) в реестре Windows может дать мгновенный прирост производительности. Как показывают замеры, только эта настройка может сократить время запуска отладки на 1 минуту и более. Для оптимизации необходимо проверить ветку реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System и соответствующие параметры в Terminal Server.
Посмотрим на работу СУБД. Для тестовых контуров, где сохранность данных в случае сбоя менее критична, чем скорость их записи, мы можем применить агрессивные настройки MS SQL Server:
Simple. Это минимизирует запись в лог транзакций (.ldf файл) и существенно ускоряет операции по обновлению конфигурации.Max Degree of Parallelism в значение 1. Это исключит затраты ресурсов на попытки SQL-сервера распараллелить мелкие запросы, которыми изобилует процесс обновления метаданных.tempdb вынесена на самый быстрый SSD-накопитель и разделена на несколько файлов одинакового размера (обычно по количеству ядер процессора, но не более 8).Помимо настроек «железа», мы можем изменить подход к самой разработке, чтобы минимизировать время ожидания. Рассмотрим несколько эффективных приемов:
Использование расширений конфигурации. Это самый действенный метод. Изменения в расширениях применяются практически мгновенно по сравнению с обновлением основной конфигурации 1С:ERP. Разберем правило: ведите разработку в расширении, а перенос в основную конфигурацию делайте только перед финальным тестированием или сборкой релиза.
Отключение лишнего функционала. В тестовой базе 1С:ERP рекомендуется программно или через настройки отключить сервисы, которые замедляют запуск системы:
Проанализируем пример кода, который можно использовать для массового отключения регламентных заданий в тестовой базе:
Менеджер = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
Для Каждого Задание Из Менеджер Цикл
Если Задание.Использование Тогда
Задание.Использование = Ложь;
Задание.Записать();
КонецЕсли;
КонецЦикла;
Выясним причину влияния кэша 1С на скорость работы в терминале. При запуске Конфигуратора и клиента создаются тысячи мелких файлов в папке AppData пользователя. Если профили пользователей хранятся на медленном диске или сетевой полке, это «убьет» производительность даже на быстром процессоре.
Рекомендуем рассмотреть возможность переноса временных папок (TEMP и TMP) и кэша 1С на скоростные NVMe накопители. Также крайне важно добавить папки с кэшем 1С и файлы базы данных (.mdf, .ldf) в исключения антивируса. Постоянное сканирование временных файлов при компиляции может замедлять процесс в 1.5–2 раза.
Проанализировав все факторы, мы можем составить план действий для ускорения тестового контура 1С:ERP:
Simple и настраиваем MAXDOP = 1.Применение этих мер в комплексе позволяет сократить время ожидания с пяти минут до вполне комфортных 30–45 секунд, что значительно повышает продуктивность работы программиста 1С.