Почему 1С тормозит в клиент-серверном режиме и как повысить производительность системы?

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

Ситуация, когда файловая база 1С демонстрирует высокие показатели производительности (например, по тесту Гилёва), а при переходе на клиент-серверный вариант (MS SQL Server + сервер приложений 1С) система начинает замедляться — достаточно распространенная проблема. Рассмотрим подробно, почему происходит деградация скорости, где искать «узкие места» и как правильно настроить оборудование, СУБД и конфигурацию 1С.

Анализ влияния оборудования и тактовой частоты процессора

Ключевым фактором производительности базовых операций 1С (проведение документов, выполнение ключевых алгоритмов, однопоточные тесты) является **однопоточная производительность процессора**. Рассмотрим основные аппаратные причины замедления:

  1. Тактовая частота ядра: Платформа 1С выполняет проведение документа строго в одном потоке. Если сервер оснащен многоядерным процессором с низкой базовой частотой (например, 2.4 ГГц), то суммарное количество ядер не компенсирует низкую скорость одного ядра. Для быстрой работы 1С критически важна высокая частота на ядро (3.5–4.0 ГГц и выше).
  2. Задержки межпроцессорного обмена (NUMA): В двухпроцессорных серверах обращение процесса 1С или SQL Server к оперативной памяти, подключенной к соседнему физическому процессору, проходит через межпроцессорную шину. Это создает микрозадержки, влияющие на однопоточную скорость обработки данных.
  3. Энергосбережение и парковка ядер (Core Parking): По умолчанию операционная система и BIOS сервера могут понижать частоту неиспользуемых ядер или переводить их в спящий режим (C-States / EIST / SpeedStep). При появлении однопоточной нагрузки происходит задержка на выход ядра из энергосберегающего состояния. В настройках BIOS сервера необходимо выставить режим Maximum Performance, а в ОС отключить парковку ядер.

Оптимизация параметров MS SQL Server

Неправильные или «дефолтные» настройки СУБД — одна из самых частых причин падения производительности 1С в клиент-серверном варианте. Проанализируем ключевые параметры, которые необходимо проверить и настроить:

  1. Настройка степени параллелизма (MAXDOP): По умолчанию MS SQL Server пытается распараллелить сложные запросы на все доступные ядра. Для 1С это часто приводит к взаимным блокировкам потоков и ожиданиям CXPACKET. Для стабильной работы 1С параметр max degree of parallelism рекомендуется устанавливать в значение 1.
  2. Размещение и оптимизация базы TempDB:

    База tempdb активно используется платформой 1С для создания временных таблиц. Проанализируем правила ее настройки:

    • Перенесите файлы tempdb на самый быстрый доступный диск (SSD/NVMe или RAM-диск).
    • Разделите tempdb на несколько файлов данных одинакового размера (по количеству логических ядер, но обычно не более 8 файлов).
    • Уберите автосжатие (Auto Shrink) и настройте адекватный шаг авторасширения файлов (например, фиксированным объемом в МБ, а не в процентах).
    • Для MS SQL Server 2008 R2 включите флаги трассировки -T1117 (равномерное авторасширение всех файлов базы) и -T1118 (использование выделенных экстентов).
  3. Модель восстановления (Recovery Model): Для рабочих баз с регулярным резервным копированием журнала транзакций используется модель Full. Если же выполняется массовая загрузка данных или база является тестовой, режим Simple работает быстрее за счет минимального протоколирования операций в лог.
  4. Права учетной записи SQL Server в Windows:
    • Lock Pages in Memory (Блокировка страниц в памяти): Предоставление этой привилегии учетной записи службы SQL Server предотвращает выгрузку буферного кэша СУБД из оперативной памяти в файл подкачки Windows.
    • Perform Volume Maintenance Tasks (Выполнение задач по обслуживанию томов): Включает мгновенную инициализацию файлов (IFI), что отключает зануление диска при авторасширении файлов данных и tempdb.
  5. Предостережение по параметру Boost Priority: Включение опции priority boost = 1 (повышение приоритета SQL Server) крайне не рекомендуется. Это может заблокировать работу процессов самой ОС Windows и службы сервера 1С rphost.exe, приводя к зависаниям сервера. Значение должно быть равно 0.

Настройки операционной системы и исключения антивируса

Разберем, какие действия необходимо выполнить на уровне ОС Windows Server:

  1. Переведите план электропитания в режим **«Высокая производительность»** (High Performance).
  2. Добавьте в исключения антивирусного сканера в реальном времени:
    • Исполняемые процессы 1С и SQL Server: rphost.exe, rmngr.exe, ragent.exe, sqlservr.exe.
    • Каталоги данных и журналов СУБД, каталог сервера приложений 1С (C:\ProgramData\1C) и папки с временными файлами.

Оптимизация на уровне конфигурации 1С и прикладного кода

Если сервер настроен корректно, но отдельные операции (например, проведение документа «Заказ клиента» в УТ 11) занимают от 3 до 10 секунд, причину следует искать в прикладном коде и структуре данных.

  1. Замер производительности: Используйте встроенный отладчик 1С. Включите **Замер производительности** перед проведением документа и проанализируйте, какие именно функции или запросы занимают наибольшее процентное время.
  2. Влияние RLS (Ограничение прав на уровне записей): В типовых конфигурациях (УТ 11, ERP, КА) включенные механизмы RLS накладывают дополнительные условия на каждый SQL-запрос. Это увеличивает время выполнения проведения документов в несколько раз. Проверьте производительность под правами администратора (без RLS) и под обычным пользователем.
  3. Анализ остатков и итогов в регистрах:
    • Проверьте регистры накопления (остатки товаров, взаиморасчеты) на наличие «зависших» нулевых остатков по разным измерениям (пересортица). Если в регистре накопились миллионы записей с нулевыми итогами, расчет остатков при проведении документа начинает деградировать.
    • Регулярно выполняйте пересчет итогов и дефрагментацию индексов через регламентные задания 1С и планы обслуживания SQL Server.
    • Убедитесь, что для часто обновляемых регистров включен режим **Разделение итогов**.
  4. Оптимизация запросов:
    • Избегайте лишних соединений в запросах и связей по неиндексированным полям.
    • Переносите условия отбора из виртуальных таблиц в секцию ГДЕ только тогда, когда это оправдано архитектурой, и проверяйте селективность индексов.

Выяснив причину замедления комплексным путем — от проверки частоты процессора и параметров MS SQL Server до замера производительности конкретных алгоритмов 1С — вы сможете добиться стабильной и быстрой работы системы.

← На главную