Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PERF_MAXDOP_CXPACKET_TUNING 1С:Предприятие и СУБД

Гайд 1С: Ограничение MAXDOP для устранения ожиданий CXPACKET в MS SQL

Обновлено: 26.08.2026 · Официальная документация ↗
  • Счетчик ожиданий CXPACKET занимает более 20–30% от общего времени всех ожиданий сервера СУБД.
  • Высокая утилизация CPU на многоядерных серверах (32+ ядер) при низком общем TPS базы данных.
  • Неравномерное распределение нагрузки по узлам NUMA.

1. Методика расчета MAXDOP для 1С:Предприятие

Для серверов с базами данных 1С применяются следующие жесткие правила (с учетом архитектуры NUMA):

  • Сервер с 1 NUMA-узлом (до 8 ядер): MAXDOP = 1 или 2.
  • Сервер с несколькими NUMA-узлами (более 16 физических ядер): MAXDOP = физическое число ядер на один NUMA-узел (обычно от 4 до 8), но не более 8.
  • Смешанная транзакционная нагрузка (OLTP 1С): Официальная рекомендация стандартов 1С — установка MAXDOP = 1 (полное отключение параллелизма) на серверах до 16 ядер во избежание взаимных блокировок при проведении.

2. Настройка MAXDOP через T-SQL

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

-- Установка ограничения (например, 4 ядра на запрос)
EXEC sp_configure 'max degree of parallelism', 4;
RECONFIGURE;
GO

3. Установка MAXDOP на уровне конкретной базы данных (SQL Server 2016+)

USE [enterprise_base];
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 1;
💡 Практика специалистов: Если на сервере СУБД наблюдается высокая латентность LATCH_EX/LATCH_SH на фоне CXPACKET, немедленно переведите MAXDOP в 1 — это мгновенно стабилизирует работу OLTP-контура 1С.

Частые вопросы (FAQ)

Почему параллелизм в 1С часто приводит к деградации?

Операции проведения документов в 1С генерируют большое количество мелких последовательных вставок и блокировок. Параллельное исполнение таких транзакций создает конкуренцию между дочерними потоками за общие блокировки страниц (LATCH).

Как интерпретировать соотношение ожиданий CXPACKET и CXCONSUMER?

CXPACKET — поток-координатор ждет завершения работы дочерних потоков. CXCONSUMER (в SQL 2016 SP2+) — естественное ожидание данных потоком-потребителем. Высокий CXPACKET при низком CXCONSUMER говорит о сильном дисбалансе нагрузки между ядрами.

Влияет ли гиперпоточность (Hyper-Threading) на выбор MAXDOP?

Да. При расчете MAXDOP всегда учитываются только ФИЗИЧЕСКИЕ ядра процессора в пределах одного NUMA-сокета, логические HT-ядра в формуле не используются.

Можно ли установить MAXDOP = 1 глобально, а для отчетов разрешить параллелизм?

Да, через механизм Resource Governor или выполнением тяжелых отчетов в отдельной базе/реплике с индивидуальной настройкой Database Scoped Configuration MAXDOP.

Полезные материалы
Рекомендуем