Какую версию Windows Server и MS SQL Server выбрать для 1С:Предприятие 8.3 и как их правильно настроить

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

При проектировании сервера для 64-разрядной платформы 1С:Предприятие 8.3 системные администраторы и разработчики часто сталкиваются с вопросом выбора оптимального сочетания операционной системы и системы управления базами данных (СУБД). Неправильный выбор версий или использование стандартных настроек «из коробки» нередко приводит к труднообъяснимым задержкам при выполнении операций, даже если физическое оборудование загружено лишь на небольшую часть своей мощности.

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

Сравнение версий Windows Server и MS SQL Server для работы с 1С

Рассмотрим характеристики разных поколений операционных систем и СУБД Microsoft с точки зрения их совместимости и производительности с 1С:Предприятие 8.3.

1. Операционная система Windows Server:

  1. Windows Server 2008 R2: Исторически одна из самых стабильных систем. Однако на сегодняшний день она полностью снята с поддержки производителем, не поддерживает современные сетевые стеки, драйверы нового оборудования и свежие платформы 1С. Ее использование оправдано только на сильно устаревшем железе.
  2. Windows Server 2012 R2: Долгое время являлась стандартом «золотой середины». Показывает предсказуемую работу, отсутствие проблем с драйверами, удобное управление сессиями пользователей в RDP и стабильную работу службы ragent платформы 1С. При этом стоит учитывать, что официальный цикл поддержки данной ОС также завершен.
  3. Windows Server 2016 / 2019 / 2022: Современные версии ОС с развитой поддержкой безопасности и оптимизированной работой со множеством ядер CPU и большими объемами RAM. При настройке терминального сервера (RDP) в Windows Server 2016 администраторы иногда сталкивались с жесткой блокировкой масштабирования экранов пользователей, однако в 2019 и 2022 версиях эти проблемы были устранены. Для новых внедрений рекомендуется выбирать Windows Server 2019 или 2022.

2. СУБД Microsoft SQL Server:

  1. MS SQL Server 2008 R2 / 2012: Проверенные временем СУБД, однако они не позволяют задействовать современные механизмы работы с памятью и параллелизмом, необходимые для высоконагруженных систем 1С.
  2. MS SQL Server 2014: В этой версии появился обновленный алгоритм оценки количества строк — Cardinality Estimator, а также встроенная технология In-Memory OLTP. Обратите внимание: технология In-Memory OLTP требует специального проектирования структуры таблиц на уровне DDL, поэтому сама платформа 1С «из коробки» ее не использует.
  3. MS SQL Server 2016 / 2019 / 2022: Обладают улучшенной обработкой параллельных запросов и продвинутым мониторингом (Query Store). Это отличный выбор для современных конфигураций 1С, при условии грамотной настройки уровня совместимости базы данных.

Влияние нового оптимизатора запросов MS SQL на производительность 1С

Начиная с версии MS SQL Server 2014, Microsoft внедрила новый модуль оценки количества строк (Cardinality Estimator). Платформа 1С динамически формирует сложные SQL-запросы с множеством временных таблиц и вложенных соединений. Новый оптимизатор в некоторых ситуациях некорректно рассчитывает стоимость планов запросов, выбирая неоптимальные индексы или операции Nested Loops вместо Hash Match.

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

Для базы данных MS SQL 2016 и новее выполним следующий SQL-скрипт в среде Management Studio:


ALTER DATABASE [Имя_Базы_1С] 
SET LEGACY_CARDINALITY_ESTIMATION = ON;
GO

Если используется MS SQL Server 2014, переключение на классический оптимизатор выполняется с помощью флага трассировки 9481 в параметрах запуска службы SQL Server или на уровне параметров конкретной базы данных.

Обязательный чек-лист настройки MS SQL Server под 1С

По умолчанию MS SQL Server настроен как универсальный сервер для разнородных нагрузок. Для эффективной работы с платформой 1С:Предприятие требуется выполнить ряд специфических системных настроек.

1. Ограничение максимального объема памяти (Max Server Memory)
Если служба MS SQL Server и сервер приложений 1С (служба ragent) расположены на одной физической или виртуальной машине, SQL Server со временем заберет всю доступную оперативную память. Это вызовет уход операционной системы и процессов 1С в файл подкачки (swapping). Необходим жесткий лимит для SQL Server, с сохранением минимум 4–8 ГБ RAM для ОС и процессов 1С.

Изменим параметр max server memory через SQL-запрос:


EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'max server memory (MB)', 28672; -- Пример: выделили 28 ГБ из 32 ГБ
RECONFIGURE;
GO

2. Настройка параллелизма (MAXDOP и Cost Threshold for Parallelism)
Значение параметра Max Degree of Parallelism (MAXDOP) по умолчанию равно 0, что заставляет SQL Server параллелить любые тяжелые запросы на все ядра процессора. В 1С это часто ведет к взаимоблокировкам и повышенным ожиданиям типа CXPACKET.

  1. Для небольших и средних баз (до 50 пользователей) рекомендуется устанавливать MAXDOP = 1.
  2. Для высоконагруженных систем значение MAXDOP выбирается в пределах от 2 до 4 (но не более количества ядер в одном NUMA-узле).
  3. Параметр Cost Threshold for Parallelism следует поднять со стандартного значения 5 до 30–50, чтобы мелкие запросы 1С не расходовали ресурсы на организацию параллельных потоков.

EXEC sp_configure 'max degree of parallelism', 1;
GO
EXEC sp_configure 'cost threshold for parallelism', 50;
GO
RECONFIGURE;
GO

3. Блокировка страниц в памяти (Lock Pages in Memory)
Предоставим учетной записи, от имени которой запущена служба MS SQL Server, право Lock Pages in Memory в локальной политике безопасности Windows (gpedit.msc -> Конфигурация Windows / Настройки безопасности / Локальные политики / Назначение прав пользователя). Это защитит оперативную память SQL Server от сброса на диск при нехватке памяти в системе.

4. Мгновенная инициализация файлов (Instant File Initialization)
Предоставим службе SQL Server право Perform Volume Maintenance Tasks (Выполнение задач по обслуживанию томов). Это позволит оперативно расширять файлы данных .mdf без предзаполнения выделенного пространства нулями.

5. Оптимизация служебной базы TempDB
Служебная база TempDB активно используется 1С для работы с временными таблицами. Разделим базу TempDB на несколько файлов данных равного размера (число файлов должно соответствовать количеству выделенных vCPU, но не более 8) и разместим их на самых быстрых дисках (NVMe / SSD).

Диагностика и устранение проблем производительности в Citrix XenServer

Часто в инфраструктуре компании сервер приложений 1С и MS SQL Server размещаются внутри виртуальных машин под управлением гипервизора Citrix XenServer (XCP-ng). При этом наблюдается характерный симптом: аппаратные ресурсы (CPU, RAM, Disk) не загружены и на 30%, но пользователи 1С жалуются на медленный отклик и торможение интерфейса.

Проанализируем основные причины этой проблемы и способы их устранения.

1. Управление питанием процессора (CPU Power Management)
По умолчанию физический сервер и гипервизор XenServer включают режим энергосбережения. При отсутствии массовой нагрузки тактовая частота ядер CPU снижается. Платформа 1С критически зависима от однопоточной производительности процессора (тактовой частоты одного ядра).

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

  1. В BIOS физического сервера переведем профиль питания из режима Balanced / Power Saving в режим High Performance / Static Max Performance.
  2. В консоли гипервизора XenServer отключим переходы процессора в состояния энергосбережения (C-states и P-states), переведя CPU Governor в режим performance с помощью команд управления гипервизором:

xenpm set-scaling-governor performance

2. Архитектура NUMA и конфигурация vCPU
Рассмотрим пример физического сервера HP ProLiant DL380p Gen8 с двумя процессорами Intel Xeon E5-2667 v2 (по 8 ядер на сокет). В такой системе присутствуют два узла NUMA, каждый из которых связан со своей локальной оперативной памятью.

Если выделить виртуальной машине, к примеру, 12 vCPU, она неизбежно пересечет границы одного NUMA-узла. В результате часть запросов к оперативной памяти будет выполняться через межпроцессорную шину (QPI/UPI), что добавляет микрозадержки при обращении к RAM. Для баз данных MS SQL и серверов 1С эти задержки вызывают заметное падение скорости работы.

Правило конфигурации: объем виртуальных ядер (vCPU) для виртуальной машины с 1С и MS SQL не должен превышать количество физических ядер одного процессора (в нашем примере — не более 8 vCPU на одну виртуальную машину).

3. Выделение памяти и переподписка (Overcommit)
Для виртуальных машин с MS SQL Server и сервером приложений 1С строго запрещено использовать динамическое распределение памяти (Dynamic Memory / Ballooning). Все ресурсы RAM должны быть жестко зарезервированы под виртуальную машину в полном объеме (100% Reservation).

Проверка дискового RAID-контроллера (HP Smart Array)

При использовании серверов HP ProLiant (например, с контроллером HP Smart Array P420i) критически важным фактором является состояние модуля кэш-памяти FBWC/BBWC (Flash-Backed / Battery-Backed Write Cache).

Если аккумулятор батареи кэша вышел из строя или отсутствует, контроллер Smart Array в целях безопасности данных полностью отключает кэширование на запись (Write Cache). Скорость случайных операций записи (файлы журнала транзакций .ldf и операции с TempDB) снижается в десятки раз, превращая работу 1С в непрерывное ожидание диска.

Администратору необходимо регулярно проверять через утилиту HPSSACLI или SSA состояние батареи кэш-модуля и соотношение кэша на чтение/запись (рекомендуется выставлять соотношение 25% Read / 75% Write или 50%/50%).

Итоги и рекомендации

Поведем итоги по построению высокопроизводительного сервера 1С:

  1. В качестве ОС рекомендуем выбирать актуальные Windows Server 2019 / 2022.
  2. Из СУБД оптимальным выбором будут MS SQL Server 2017 / 2019 / 2022.
  3. После развертывания базы обязательно переключите параметр LEGACY_CARDINALITY_ESTIMATION в положение ON и настройте параметры MAXDOP, Max Server Memory и права службы SQL в ОС.
  4. В виртуальной среде XenServer установите производительный режим работы CPU, соблюдайте границы узлов NUMA и используйте только физическое резервирование RAM.
  5. Контролируйте исправность батареи дискового контроллера для сохранения высокой скорости записи данных.
← На главную