← На главную
Ситуация, когда файловая база 1С демонстрирует высокие показатели производительности (например, по тесту Гилёва), а при переходе на клиент-серверный вариант (MS SQL Server + сервер приложений 1С) система начинает замедляться — достаточно распространенная проблема. Рассмотрим подробно, почему происходит деградация скорости, где искать «узкие места» и как правильно настроить оборудование, СУБД и конфигурацию 1С.
Анализ влияния оборудования и тактовой частоты процессора
Ключевым фактором производительности базовых операций 1С (проведение документов, выполнение ключевых алгоритмов, однопоточные тесты) является **однопоточная производительность процессора**. Рассмотрим основные аппаратные причины замедления:
- Тактовая частота ядра: Платформа 1С выполняет проведение документа строго в одном потоке. Если сервер оснащен многоядерным процессором с низкой базовой частотой (например, 2.4 ГГц), то суммарное количество ядер не компенсирует низкую скорость одного ядра. Для быстрой работы 1С критически важна высокая частота на ядро (3.5–4.0 ГГц и выше).
- Задержки межпроцессорного обмена (NUMA): В двухпроцессорных серверах обращение процесса 1С или SQL Server к оперативной памяти, подключенной к соседнему физическому процессору, проходит через межпроцессорную шину. Это создает микрозадержки, влияющие на однопоточную скорость обработки данных.
- Энергосбережение и парковка ядер (Core Parking): По умолчанию операционная система и BIOS сервера могут понижать частоту неиспользуемых ядер или переводить их в спящий режим (C-States / EIST / SpeedStep). При появлении однопоточной нагрузки происходит задержка на выход ядра из энергосберегающего состояния. В настройках BIOS сервера необходимо выставить режим Maximum Performance, а в ОС отключить парковку ядер.
Оптимизация параметров MS SQL Server
Неправильные или «дефолтные» настройки СУБД — одна из самых частых причин падения производительности 1С в клиент-серверном варианте. Проанализируем ключевые параметры, которые необходимо проверить и настроить:
- Настройка степени параллелизма (MAXDOP): По умолчанию MS SQL Server пытается распараллелить сложные запросы на все доступные ядра. Для 1С это часто приводит к взаимным блокировкам потоков и ожиданиям
CXPACKET. Для стабильной работы 1С параметр max degree of parallelism рекомендуется устанавливать в значение 1.
- Размещение и оптимизация базы TempDB:
База tempdb активно используется платформой 1С для создания временных таблиц. Проанализируем правила ее настройки:
- Перенесите файлы
tempdb на самый быстрый доступный диск (SSD/NVMe или RAM-диск).
- Разделите
tempdb на несколько файлов данных одинакового размера (по количеству логических ядер, но обычно не более 8 файлов).
- Уберите автосжатие (Auto Shrink) и настройте адекватный шаг авторасширения файлов (например, фиксированным объемом в МБ, а не в процентах).
- Для MS SQL Server 2008 R2 включите флаги трассировки
-T1117 (равномерное авторасширение всех файлов базы) и -T1118 (использование выделенных экстентов).
- Модель восстановления (Recovery Model): Для рабочих баз с регулярным резервным копированием журнала транзакций используется модель
Full. Если же выполняется массовая загрузка данных или база является тестовой, режим Simple работает быстрее за счет минимального протоколирования операций в лог.
- Права учетной записи SQL Server в Windows:
- Lock Pages in Memory (Блокировка страниц в памяти): Предоставление этой привилегии учетной записи службы SQL Server предотвращает выгрузку буферного кэша СУБД из оперативной памяти в файл подкачки Windows.
- Perform Volume Maintenance Tasks (Выполнение задач по обслуживанию томов): Включает мгновенную инициализацию файлов (IFI), что отключает зануление диска при авторасширении файлов данных и
tempdb.
- Предостережение по параметру Boost Priority: Включение опции
priority boost = 1 (повышение приоритета SQL Server) крайне не рекомендуется. Это может заблокировать работу процессов самой ОС Windows и службы сервера 1С rphost.exe, приводя к зависаниям сервера. Значение должно быть равно 0.
Настройки операционной системы и исключения антивируса
Разберем, какие действия необходимо выполнить на уровне ОС Windows Server:
- Переведите план электропитания в режим **«Высокая производительность»** (High Performance).
- Добавьте в исключения антивирусного сканера в реальном времени:
- Исполняемые процессы 1С и SQL Server:
rphost.exe, rmngr.exe, ragent.exe, sqlservr.exe.
- Каталоги данных и журналов СУБД, каталог сервера приложений 1С (
C:\ProgramData\1C) и папки с временными файлами.
Оптимизация на уровне конфигурации 1С и прикладного кода
Если сервер настроен корректно, но отдельные операции (например, проведение документа «Заказ клиента» в УТ 11) занимают от 3 до 10 секунд, причину следует искать в прикладном коде и структуре данных.
- Замер производительности: Используйте встроенный отладчик 1С. Включите **Замер производительности** перед проведением документа и проанализируйте, какие именно функции или запросы занимают наибольшее процентное время.
- Влияние RLS (Ограничение прав на уровне записей): В типовых конфигурациях (УТ 11, ERP, КА) включенные механизмы RLS накладывают дополнительные условия на каждый SQL-запрос. Это увеличивает время выполнения проведения документов в несколько раз. Проверьте производительность под правами администратора (без RLS) и под обычным пользователем.
- Анализ остатков и итогов в регистрах:
- Проверьте регистры накопления (остатки товаров, взаиморасчеты) на наличие «зависших» нулевых остатков по разным измерениям (пересортица). Если в регистре накопились миллионы записей с нулевыми итогами, расчет остатков при проведении документа начинает деградировать.
- Регулярно выполняйте пересчет итогов и дефрагментацию индексов через регламентные задания 1С и планы обслуживания SQL Server.
- Убедитесь, что для часто обновляемых регистров включен режим **Разделение итогов**.
- Оптимизация запросов:
- Избегайте лишних соединений в запросах и связей по неиндексированным полям.
- Переносите условия отбора из виртуальных таблиц в секцию
ГДЕ только тогда, когда это оправдано архитектурой, и проверяйте селективность индексов.
Выяснив причину замедления комплексным путем — от проверки частоты процессора и параметров MS SQL Server до замера производительности конкретных алгоритмов 1С — вы сможете добиться стабильной и быстрой работы системы.