Почему результаты теста Гилева в MS SQL нестабильны и как оптимизировать сервер 1С

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

При развертывании связки 1С:Предприятие и MS SQL Server на мощном серверном оборудовании администраторы часто сталкиваются с парадоксом: файловая база показывает отличные результаты, а клиент-серверный вариант выдает низкие и, что более критично, нестабильные показатели в тестах производительности. Разберем ситуацию, когда на одном и том же «железе» тест Гилева показывает разброс от 13 до 52 единиц. В таких случаях грамотный замер производительности контура 1С и поиск узких мест помогает выявить, где именно возникают задержки и как привести систему к стабильно высокому результату.

Анализируем влияние настроек электропитания и BIOS

Одной из самых частых причин «плавающих» показателей на серверных процессорах семейства Xeon являются механизмы глубокого энергосбережения. По умолчанию серверное оборудование настроено на баланс между производительностью и потреблением электричества, что губительно для высоконагруженных систем 1С. Рассмотрим, что необходимо сделать в первую очередь:

  1. Настройка C-States и P-States: Зайдем в BIOS сервера и отключим все режимы глубокого засыпания ядер. Если процессор снижает частоту в моменты микропауз между транзакциями теста, результат будет непредсказуемым.
  2. Фиксация частоты (Turbo Boost): На многопроцессорных системах важно исключить «скачки» частоты. Проанализируем настройки System Profile в BIOS и установим режим Maximum Performance.
  3. Настройка ОС Windows: В панели управления сервером выберем план электропитания «Высокая производительность». Перейдем в дополнительные параметры и убедимся, что «Минимальное состояние процессора» установлено на 100%. Это предотвратит парковку ядер (Core Parking), которая вызывает задержки при обработке входящих запросов от rphost.exe.

Разберемся с архитектурой NUMA и многопроцессорными системами

Современные сервера, такие как используемый в примере Xeon Gold 6334, имеют архитектуру NUMA (Non-Uniform Memory Access). В двухпроцессорной системе оперативная память распределена между процессорами. Если поток sqlservr.exe выполняется на первом процессоре, а данные пытается прочитать из памяти, подключенной ко второму процессору, возникают значительные задержки из-за передачи данных через шину UPI.

Проанализируем стратегию оптимизации:

Тонкая настройка MS SQL Server для работы с 1С

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

Разберем ключевые параметры, которые влияют на стабильность:

Мгновенная инициализация файлов (Instant File Initialization): Выясним, включена ли эта опция. Если SQL-серверу не выдано право в локальных политиках безопасности на «Выполнение задач по обслуживанию томов», то при автоматическом расширении базы данных или лога транзакций (.ldf) система будет заполнять новое пространство нулями. Это приводит к резким «провалам» в тесте Гилева. Убедимся, что учетная запись, под которой запущен SQL, имеет это право.

Настройка параллелизма (MAXDOP): Параметр Max Degree of Parallelism критически важен. Для 1С рекомендуется устанавливать значение 1. Это исключает накладные расходы на попытки SQL-сервера распараллелить простые запросы, что часто только замедляет их выполнение и создает нестабильность при высокой конкуренции за ресурсы.

Блокировка страниц в памяти (Lock Pages in Memory): Настроим привилегию Lock Pages in Memory для учетной записи SQL. Это предотвратит выгрузку буферного кэша СУБД в файл подкачки операционной системой Windows, что исключит внезапные замедления после простоев. Также крайне важна правильная настройка регламентных операций MS SQL SERVER, адаптированная под требования 1С.

Оптимизация дисковой подсистемы и лога транзакций

Тест Гилева в значительной степени замеряет скорость записи в лог транзакций. Рассмотрим факторы, влияющие на этот процесс:

  1. Режим работы RAID-контроллера: Проверим состояние батарейки (BBU). Если она неисправна, контроллер может переключиться в режим Write-Through, что снизит скорость записи в десятки раз. Для стабильных 50+ попугаев необходим режим Write-Back.
  2. Размер кластера: При форматировании дисков под базу данных и логи SQL Server используем размер кластера 64 КБ. Это стандарт де-факто для высокопроизводительных систем хранения данных.
  3. Обслуживание индексов: При использовании современных платформ (8.3.22+) рекомендуется применять доработанное решение MaintenanceSolution от Ola Hallengren. Если база данных велика, целесообразно внедрить адаптивное обновление индексов MS SQL, чтобы выполнять операции только там, где это действительно необходимо.

Исключение влияния внешних факторов

Выясним, какие фоновые процессы могут мешать тестированию. В Windows Server 2019 по умолчанию активен Windows Defender. Если не добавить процессы и файлы базы данных в исключения, антивирус будет сканировать каждый блок данных при обращении СУБД к диску.

Добавим в исключения антивируса:

Также проанализируем протокол подключения. При расположении 1С и SQL на одном сервере должен использоваться протокол Shared Memory. Посмотрим настройки в SQL Server Configuration Manager и убедимся, что этот протокол включен и стоит первым в приоритете, чтобы избежать задержек сетевого стека при использовании TCP/IP loopback.

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

Стабильность результатов теста (например, получение уверенных 45-55 попугаев вместо скачков 13-52) достигается не за счет «мощности» процессора, а за счет исключения всех факторов ожидания (wait types). Файловая база дает 90+ единиц, так как работает в адресном пространстве одного процесса без сетевых и межпроцессных взаимодействий. Наша задача в SQL-варианте — максимально приблизить скорость взаимодействия сервера 1С и СУБД к скорости работы с памятью, минимизировав влияние ОС и механизмов энергосбережения.

← На главную