Проведение документов в тяжелых конфигурациях, таких как 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С:ERP выполняет огромное количество запросов с использованием временных таблиц. Эти таблицы создаются в СУБД MS SQL в служебной базе TempDB, а также на самом сервере 1С во временных папках операционной системы. Если эти файлы находятся на медленном диске, вся система будет простаивать в ожидании дисковых операций записи/чтения.
Выполним перенос и настройку базы TempDB на быстрый SSD/NVMe накопитель корпоративного класса:
TempDB на несколько файлов данных равного размера. Рекомендуется создавать количество файлов, равное числу физических ядер процессора (но не более 8 файлов). Для нашего случая с 8 потоками создадим 4 или 8 файлов данных.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-эффект).
Чтобы избежать этой задержки при совместном размещении 1С и SQL на одном сервере, настроим процессорное соответствие (CPU Affinity):
rphost сервера 1С принудительно зафиксируем на второй NUMA-ноде. Это позволит избежать перекрестных запросов к памяти через медленную шину между процессорами.Когда сервер 1С и MS SQL Server установлены на одном физическом компьютере, обмен данными между ними по умолчанию может происходить по сетевому протоколу TCP/IP. Это создает дополнительную нагрузку на сетевой стек Windows.
Для ускорения взаимодействия переведем подключение на протокол Shared Memory (общая память):
В консоли администрирования кластера 1С при создании или изменении параметров подключения к базе данных укажем в поле «Сервер баз данных» префикс протокола:
lpc:ИмяВашегоСервера
Использование общей памяти позволяет передавать пакеты данных напрямую из адресного пространства 1С в адресное пространство SQL, сокращая время проведения транзакций на 10-15%.
Если на сервере используется лицензия уровня ПРОФ, платформа 1С жестко ограничивает администратора: в кластере может быть запущен только один активный рабочий процесс rphost. При интенсивной работе пользователей этот процесс постепенно фрагментирует оперативную память и «раздувается» (иногда до 40 ГБ и более), что приводит к падению скорости выполнения кода.
Решить эту проблему без покупки лицензии КОРП можно с помощью тонкой настройки параметров перезапуска в консоли администрирования кластера 1С:
86400 секунд (раз в сутки).600 секунд.При таких настройках платформа будет автоматически создавать новый чистый процесс rphost, переводить на него новых пользователей, а старый «раздувшийся» процесс плавно завершать после завершения активных транзакций, не прерывая работу пользователей.
Зачастую длительное проведение ПТУ связано с тем, что система «из коробки» пытается выполнить множество фоновых расчетов в реальном времени. Проанализируем настройки самой ERP:
НСИ и администрирование — Финансовый результат и контроллинг — Учет товаров. Убедимся, что расчет себестоимости настроен в фоновом режиме (по расписанию регламентным заданием), а не выполняется интерактивно в момент проведения документа.