Как настроить сервер и устранить проблемы с производительностью в 1С:ERP?

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

Внедрение и эксплуатация тяжелых конфигураций, таких как 1С:ERP Управление предприятием, часто сопровождаются проблемами с производительностью. Пользователи могут сталкиваться со сбоями из-за конфликтов блокировок, длительной обработкой проверок или многоминутным открытием документов с обширными табличными частями. Проанализируем ключевые причины возникновения системных задержек и разберем по шагам комплекс мер по аппаратной, системной и программной оптимизации.

Выясняем причины низкой производительности

Рассмотрим типовую ситуацию: база данных 1С:ERP работает в клиент-серверном режиме на СУБД MS SQL Server, обслуживая около 50 активных пользователей. При этом открытие формы документа (например, Производство без заказа) с несколькими тысячами строк в табличной части занимает до 15–20 минут, а в процессе работы возникают блокировки. Проанализируем, с чем связаны такие симптомы:

  1. Низкая тактовая частота процессора и энергосбережение: Сервер 1С критически чувствителен к однопоточной производительности ядер. Процессоры с низкой базовой частотой (особенно при работе в виртуальной среде, где блокируются механизмы динамического ускорения Turbo Boost) не способны быстро выполнять последовательные операции платформы.
  2. Медленная дисковая подсистема: Использование классических дисков SAS HDD создает задержки очереди к диску (Disk Queue Length) при активной работе с транзакциями и базами временных таблиц.
  3. Сериализация данных управляемых форм: При открытии документа платформа производит передачу всего контекста объекта на клиент. Если табличная часть содержит тысячи строк, основное время расходуется на сериализацию данных в XML/JSON, передачу по сети и генерацию визуальной модели элементов управления.
  4. Неоптимальные настройки СУБД и блокировки: При синхронной работе пользователей отсутствие включенных механизмов версионирования строк на уровне MS SQL приводит к ожиданиям на блокировках чтения и записи.

Оптимизация аппаратной части и среды виртуализации

Для обеспечения комфортной работы 1С:ERP требуется правильно сформировать аппаратный контур сервера приложений и сервера СУБД.

Разберем основные требования к физическому железу и настройкам гипервизора:

  1. Переход на высокоскоростные накопители: Базы данных СУБД и каталоги временных файлов сервера 1С необходимо размещать строго на накопителях класса SSD (NVMe / Enterprise SAS SSD). Это снизит задержки ввода-вывода и устранит узкие места при работе tempdb.
  2. Выбор процессора с высокой частотой: Поток выполнения конкретного сеанса 1С в один момент времени обрабатывается одним ядром. Поэтому приоритетом является высокая базовая частота процессора (от 3.0–3.5 ГГц и выше). Количество ядер подбирается из расчета обеспечения параллельных рабочих процессов (rphost) для подключенных пользователей.
  3. Фиксация профиля максимальной производительности: На уровне BIOS/UEFI сервера и операционной системы необходимо принудительно активировать режим High Performance. Снижение частоты ядер в простаивающих состояниях (C-states, P-states) недопустимо.
  4. Настройка vNUMA и резервирование памяти: При работе в среде виртуализации (VMware ESXi или Microsoft Hyper-V) конфигурация виртуальных сокетов и ядер виртуальной машины должна строго соответствовать физической топологии NUMA-узлов хоста. Для ВМ с 1С и SQL необходимо настроить 100% резервирование оперативной памяти (Memory Reservation) и отключить механизмы динамического перераспределения (Dynamic Memory / Ballooning).

Настройка и оптимизация MS SQL Server под 1С

Даже при наличии управляемых блокировок в конфигурации 1С:ERP СУБД требует специализированной тонкой настройки для исключения конфликтов доступа и эффективной работы с памятью.

Рассмотрим ключевые параметры настройки MS SQL Server:

  1. Включение режима версионирования строк (RCSI): Для предотвращения конфликтов между операциями чтения и записи активируем режим READ_COMMITTED_SNAPSHOT. Это переводит операции чтения на использование версий строк в tempdb.
    
    ALTER DATABASE [Имя_Базы_1С] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
    
  2. Ограничение параллелизма (MAXDOP): Чтобы избежать задержек на координацию параллельных потоков и специфических ожиданий CXPACKET, установим параметр Max Degree of Parallelism в значение 1 (либо зададим жесткий порог Cost Threshold for Parallelism).
  3. Конфигурация базы tempdb: Создадим несколько файлов данных tempdb равного размера (по количеству физических ядер процессора, но обычно не более 8). Это исключит конкуренцию за страницы распределения памяти.
  4. Активация флагов трассировки: Для SQL Server рекомендуются флаги TF 1118 (устранение смешивания экстентов в tempdb) и TF 2371 (динамический порог автоматического обновления статистики для больших таблиц).

Оптимизация работы с управляемыми формами и большими табличными частями

Если открытие документа с 2000+ строк занимает длительное время, замена оборудования — лишь часть решения. Проанализируем, как модернизировать программный код и поведение форм 1С.

Разберем практические приемы оптимизации:

  1. Постраничная подгрузка данных в интерфейсе: Отображать тысячи строк на форме одновременно неэффективно. Применяют разделение на страницы либо подгрузку данных порциями по требованию пользователя.
  2. Использование динамических списков: Если табличная часть используется преимущественно для просмотра, ее можно заменять динамическим списком с включенным режимом ДинамическоеСчитывание. В этом случае платформа запрашивает с сервера только те строки, которые помещаются на экране пользователя.
  3. Отключение тяжелых серверных вызовов в событиях формы: Проверим события ПриСозданииНаСервере, ПриОткрытии или ПриПолученииДанныхНаСервере. Если при открытии формы для каждой строки ТЧ выполняются дополнительные запросы к регистрам или вычисления сопутствующих данных, их необходимо перенести на отложенную обработку или выполнять по интерактивной команде.
  4. Отложенное проведение документов: Для снятия нагрузки с транзакций в режиме реального времени в 1С:ERP рекомендуется использовать механизмы отложенного проведения сложных расчетов (партионный учет, расчет себестоимости) через регламентные задания.

Пример кода для проверки структуры и корректного получения данных без передачи лишнего контекста на клиент:


&НаСервере
Процедура ЗагрузитьСтрокиПорциейНаСервере(ДокументСсылка, НомерPage, РазмерСтраницы)
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ТЧ.НомерСтроки КАК НомерСтроки,
        |   ТЧ.Номенклатура КАК Номенклатура,
        |   ТЧ.Количество КАК Количество
        |ИЗ
        |   Документ.ПроизводствоБезЗаказа.Товары КАК ТЧ
        |ГДЕ
        |   ТЧ.Ссылка = &Ссылка
        |УПОРЯДОЧИТЬ ПО
        |   ТЧ.НомерСтроки
        |АВТООБРАБОТКА_РАЗБИЕНИЯ_ПО_СТРАНИЦАМ"; // Условный пример оптимизированной выборки
    
    Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
    // Выполнение выборки с ограничением объема передаваемых данных
КонецПроцедуры

Инструментальная диагностика проблем

Проанализируем методику поиска узких мест, если задержки сохраняются:

  1. Настройка Технологического журнала 1С: Настроим сбор событий TLOCK, TTIMEOUT и TDEADLOCK для выявления таймаутов блокировок и кода, вызывающего длительные ожидания.
  2. Замеры производительности по APDEX: Используем встроенный в БСП механизм оценки производительности. Зафиксируем ключевые операции (открытие формы, проведение документа) для объективного контроля скорости до и после изменений.
  3. Мониторинг СУБД через Extended Events: Проведем анализ системных представлений sys.dm_os_wait_stats на предмет ожиданий диска (PAGEIOLATCH_*) и блокировок (LCK_M_*).

Сочетание мощной дисковой подсистемы SSD, высокочастотных процессоров, правильной настройки параметров MS SQL Server и оптимизации работы с контекстом управляемых форм позволяет добиться стабильной и быстрой работы 1С:ERP при любом количестве пользователей.

← На главную