Почему ПТУ проводится 3-7 секунд в 1С:ERP и как это исправить?

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

Проведение документов в тяжелых конфигурациях, таких как 1С:ERP Управление предприятием, часто становится «узким горлышком» всей системы. Ситуация, когда простой документ «Поступление товаров и услуг» (ПТУ) на 20 строк проводится от 3 до 7 секунд даже на относительно свободной базе, не является нормальной. В оптимально настроенной системе это время должно составлять не более 1–2 секунд. При избыточном объеме исторических данных в системе для повышения производительности применяется многопоточная свёртка 1С:ERP.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем влияние аппаратной части сервера, настроек СУБД MS SQL Server и самой платформы 1С, а также предложим пошаговый план оптимизации для ускорения проведения документов.

Выясняем первопричину: тест производительности и процессор

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

Рассмотрим характеристики процессора на примере популярного серверного чипа Intel Xeon Silver 4112. Он имеет базовую тактовую частоту всего 2.6 ГГц. Для 1С:ERP критически важна именно однопоточная производительность (линейная скорость ядра), поскольку компиляция модулей и расчеты при проведении одного документа выполняются строго в один поток. Высокое количество ядер при низкой частоте каждого ядра не спасет ситуацию.

Для оптимизации работы процессора выполним следующие шаги в BIOS сервера:

  1. Переведем режим управления питанием (Power Management) в положение Static High Performance (Максимальная производительность). Это заблокирует сброс частоты процессора в моменты простоя.
  2. Отключим энергосберегающие технологии процессора: C-States (C1E, C3, C6 и др.). Переход ядер в спящий режим и их «пробуждение» создают микрозадержки, губительные для транзакций СУБД.
  3. Отключим технологию Intel SpeedStep / Speed Shift на уровне системы, чтобы заставить процессор постоянно работать на максимальной частоте Turbo Boost.

Оптимизируем TempDB и временные файлы 1С

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

Выполним перенос и настройку базы TempDB на быстрый SSD/NVMe накопитель корпоративного класса:

  1. Разделим базу TempDB на несколько файлов данных равного размера. Рекомендуется создавать количество файлов, равное числу физических ядер процессора (но не более 8 файлов). Для нашего случая с 8 потоками создадим 4 или 8 файлов данных.
  2. Перенесем файлы данных и логов TempDB на SSD. Для этого выполним в SQL Server Management Studio следующий скрипт:

USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\SQL_Temp\tempdb.mdf', SIZE = 1024MB, FILEGROWTH = 512MB);
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'D:\SQL_Temp\templog.ldf', SIZE = 512MB, FILEGROWTH = 256MB);
GO

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

Устраняем NUMA-эффект на двухпроцессорных серверах

Если на вашем сервере установлено два физических процессора, операционная система делит память на так называемые NUMA-узлы. Обращение процессора к оперативной памяти, подключенной к соседнему сокету, происходит со значительной задержкой (NUMA-эффект).

Чтобы избежать этой задержки при совместном размещении 1С и SQL на одном сервере, настроим процессорное соответствие (CPU Affinity):

  1. Для MS SQL Server выделим первую NUMA-ноду (первый процессор и его локальную память). Это делается в свойствах сервера SQL на вкладке «Processors».
  2. Процессы rphost сервера 1С принудительно зафиксируем на второй NUMA-ноде. Это позволит избежать перекрестных запросов к памяти через медленную шину между процессорами.

Настройка протокола Shared Memory

Когда сервер 1С и MS SQL Server установлены на одном физическом компьютере, обмен данными между ними по умолчанию может происходить по сетевому протоколу TCP/IP. Это создает дополнительную нагрузку на сетевой стек Windows.

Для ускорения взаимодействия переведем подключение на протокол Shared Memory (общая память):

В консоли администрирования кластера 1С при создании или изменении параметров подключения к базе данных укажем в поле «Сервер баз данных» префикс протокола:

lpc:ИмяВашегоСервера

Использование общей памяти позволяет передавать пакеты данных напрямую из адресного пространства 1С в адресное пространство SQL, сокращая время проведения транзакций на 10-15%.

Обход ограничений лицензии ПРОФ для рабочего процесса rphost

Если на сервере используется лицензия уровня ПРОФ, платформа 1С жестко ограничивает администратора: в кластере может быть запущен только один активный рабочий процесс rphost. При интенсивной работе пользователей этот процесс постепенно фрагментирует оперативную память и «раздувается» (иногда до 40 ГБ и более), что приводит к падению скорости выполнения кода.

Решить эту проблему без покупки лицензии КОРП можно с помощью тонкой настройки параметров перезапуска в консоли администрирования кластера 1С:

  1. Откроем свойства нашего локального кластера в утилите администрирования.
  2. Установим параметр «Интервал перезапуска» равным 86400 секунд (раз в сутки).
  3. Зададим параметр «Допустимый объем памяти» (например, 20-30 ГБ в зависимости от общего объема ОЗУ сервера).
  4. Установим параметр «Интервал превышения допустимого объема памяти» в значение 600 секунд.

При таких настройках платформа будет автоматически создавать новый чистый процесс rphost, переводить на него новых пользователей, а старый «раздувшийся» процесс плавно завершать после завершения активных транзакций, не прерывая работу пользователей.

Оптимизация прикладных настроек 1С:ERP

Зачастую длительное проведение ПТУ связано с тем, что система «из коробки» пытается выполнить множество фоновых расчетов в реальном времени. Проанализируем настройки самой ERP:

  1. Отложенный расчет себестоимости: Перейдем в раздел НСИ и администрирование — Финансовый результат и контроллинг — Учет товаров. Убедимся, что расчет себестоимости настроен в фоновом режиме (по расписанию регламентным заданием), а не выполняется интерактивно в момент проведения документа.
  2. Отражение в регламентированном учете: Проверим, чтобы проводки по бухгалтерскому и налоговому учету формировались фоновым заданием по расписанию, а не мгновенно при нажатии кнопки «Провести».
  3. Контроль лимитов: Если в системе включен жесткий контроль лимитов расхода денежных средств или остатков на складах, система при каждом проведении делает тяжелые запросы. Рекомендуется перевести данные проверки в режим оперативного контроля только при необходимости.
← На главную