Перейти к основному содержанию
 

Оптимизация сервера Supermicro для работы с 1С

1C

Всё ещё ненавижу 1С, здравствуйте. Недавно писал статью по разгону сервера HP для 1С:

Оптимизация сервера HP для работы с 1С

Сегодня похожая задача по разгону сервера Supermicro для 1С. Сегодня мы будем оптимизировать физический сервер. Конфигурация тестового стенда:

  • Аппаратная часть
    • Сервер Supermicro на базе материнской платы X11DDW-NT
    • Два процессора Intel Xeon Gold 6240R CPU @ 2.40GHz
    • 768 ГБ оперативной памяти с максимальной частотой 2933 МГц
    • Аппаратный RAID контроллер не используется, но есть:
      • Программный RAID1 из двух SSD под операционную систему на чипе Intel
      • Динамический RAID1 из двух NVMe под базы данных и 1C
  • Программная часть
    • Операционная система Windows Server 2016
    • 1C 8.3
    • MSSQL 2019

1С и MSSQL установлены на одном и том же сервере. Базы данных размещены на динамическом NVMe массиве. На сервер установлены последние прошивки, все настройки BIOS — по умолчанию.

Сервер в домене. Служба 1С и MSSQL запускаются под доменными пользователями, оба пользователя входят в группу локальных администраторов сервера.

Перед началом работ по оптимизации выполним тест TPC-1C.

Однопоточный синтетический тест 1С от Гилёва — TPC-1C

1c

И получаем результат: 2.96 попугая. Этот результат ужасен. Давайте оптимизируем.

Аппаратная оптимизация

Предварительно обновляем BIOS и IPMI до последней версии.

Посмотрим на текущую производительность процессора:

cpu

Видно, что включена виртуализация. Максимальная частота процессора 2.40 ГГц, но сейчас она на уровне 1.0 ГГц, это значит, что частотой процессора управляет операционная система. Нужно передать управление частотой процессора в BIOS. Это можно сделать в разделе Advanced Power Management Configuration.

supermicro

И опцию ENERGY_PERF_BIAS_CFG не обходим стороной. Нам нужно Maximum Performance.

supermicro

Настроек в BIOS много, которые можно подкрутить, некоторые я уже описывал в статье:

Разгоняем CPU на сервере Supermicro SYS-1029P-WTRT

Вот их и применяем, лучше это делать по очереди. Да, не забудьте предварительно обновить BIOS и IPMI до последней версии.

supermicro

Сохраняем изменения и перезагружаем сервер.

Программная оптимизация

Применим настройки операционной системы и MSSQL для 1С, которые я делал в предыдущей статье.

Настройка MSSQL для работы с 1С — мифы и реальность

Установка последнего Service Pack и Cumulative Update на MSSQL сервер

Обязательно нужно сделать.

Форматирование с размером блока 64Кб

Рекомендуют форматировать файловую систему для БД с размером блока 64 Кб.

Стандартный размер кластера (лучше использовать это название) в файловой системе NTFS:

ёмкость до 16 Тб — 4 килобайта
ёмкость от 16 до 32 Тб — 8 килобайт
ёмкость от 32 до 64 Тб — 16 килобайт
ёмкость от 64 до 128 Тб — 32 килобайта
ёмкость от 128 до 256 Тб — 64 килобайта

У меня программный динамический RAID массив, форматирую файловую систему с размером блока 64 Кб.

Windows Server 2016 — настройка программного RAID массива

Database instant file initialization

Рекомендуют включить возможность Database instant file initialization для пользователя, от которого запущена служба Microsoft SQL Server. Вот только при установке MSSQL 2019 я эту галку уже ставил.

Установка Microsoft SQL Server 2019

sql

Обратите внимание на галку Grand Perform Volume Maintenance Task privilege to SQL Server Database Engine Service. Полезная штука для оптимизации производительности. Настройка влияет на файл данных. Когда файл автоматически вырастает, то новый кусок заполняется нулями, в этот момент SQL может тормозить. Instant File Initialization (IFI) позволяет отключить это зануление.

Lock pages in memory

Рекомендуют установить разрешение на Lock pages in memory (блокировку страниц в памяти) для пользователя, от которого запущена служба Microsoft SQL Server. Эта политика Windows определяет, какие учетные записи могут сохранять данные в физической памяти, чтобы система не отправляла страницы данных в виртуальную память на диске.

  1. Запускаем Local Group Policy Editor:
    gpedit.msc
  2. Слева выбираем Local Computer Policy, Computer Configuration, Windows Settings, Security Settings, Local Policies, User Rights Assignment.
  3. Тыкаем в Lock pages in memory.

    sql
  4. Видим, что политика не настроена. Можно добавить сюда пользователя, от имени которого работает SQL Server, я просто добавляю сюда группу Administrators.

Эту настройку применяем. Нужно учитывать, что потребление оперативки возрастёт.

Power Option: High performance

По умолчанию план электропитания в Windows Server 2016 — Balanced. Переключаем план на High performance.

sql

Индексация файлов

Отключаем индексацию файлов на диске. Делаем это на всякий случай. Служба индексации не установлена, но, вдруг, кто-то установит...

Настройка памяти

Да, память для MSSQL нужно настраивать. По умолчанию сиквел жрёт всё что может, системе начинает не хватать. Как итог — тормоза. Нужно выделить SQL серверу строго определённое количество памяти и пусть не рыпается. Это позволить избежать конкуренции за ресурсы.

MSSQL - настройка памяти

sql

Настройка процессора

Настроим проц.

MSSQL - настройка процессора

sql

Расположение файлов данных

Файлы данных размещаю на динамическом массиве NVMe.

Перенести tempdb в RAM

Это можно сделать.

MSSQL — переносим tempdb на RAM диск

Однако, заказчик не хочет эту опцию, просто размещаю tempdb на NVMe диске.

Установить параметр Max degree of parallelism = 1

Считаю, что лучше добавить параллельных потоков, устанавливаю в 8.

Флаги трассировки

4199 — включает исправления оптимизатора из фиксов.

1118 — использовать разные страницы памяти.

Проверка статусов флагов трассировки:

DBCC TRACESTATUS (1118, 4199);
GO

Запускаем SQL Server Configuration Manager. SQL Server Services. SQL Server - правой кнопкой свойства. Вкладка Startup Parameters. Добавляем -T1118 и -T4199.

sql

Для применения потребуется перезапустить SQL сервер.

Сетевые протоколы

Протокол Named pipes необходимо отключить в SQL Server Configuration Manager. Поскольку SQL сервер и 1С сервер находятся на одном сервере, то протокол TCP/IP тоже можно отключить.

sql

Разбить tempdb на несколько файлов по количеству процессоров

Это неверная рекомендация. Если вы хотите разбить tempdb на несколько файлов, то формула следующая:

  • Если у вас меньше 8 процессоров, то делайте столько файлов, сколько процессоров.
  • Если у вас 8 и более процессоров, то делайте 8 файлов.

MSSQL — увеличить количество файлов в tempdb

tempdb

Проверка

Посмотрим на текущую производительность.

1c

Частота процессора теперь 3.31 ГГц. Блин, забыл виртуализацию отключить, провожу тест.

1c

42.74 попугая, это лучше чем хорошо. Но возможности разгона ещё есть. Отключаю гипертрейдинг.

1c

Количество логических процессоров уменьшилось вдвое. Странно, но частота тоже стала ниже, 3.19 ГГц. Но она немного скачет между тактами, можно считать, что она такая же. Эти скачки, кстати, тоже можно убрать, но не сегодня.

1c

Выполняю тест.

1c

И получаем результат: 47.62 попугая. Это между хорошо и замечательно. Использовать сервер для 1С однозначно можно.

Заключение

Мы настроили аппаратный сервер Supermicro для работы с 1С. Оптимизация программной и аппаратной части помогла повысить производительность системы в 20 раз (!). В процессе работы были выполнены дополнительные действия, отключены лишние службы и настройки системы.

Однопоточный синтетический тест 1С от Гилёва TPC-1C показывает результат выше чем "Хорошо", 47.62 балла, что является прекрасным показателем для нашего сервера с процессорами Intel Xeon Gold 6240R CPU @ 2.40GHz.

Это ещё не окончательный результат, сервер можно ускорить ещё немного, чтобы добиться результата выше 50 баллов. Это реально, однако такие настройки приведут к значительным изменениям в конфигурации процессора, их нужно проводить после предварительного расчёта требуемой нагрузки на сервер.

Если у кого-нибудь есть ещё кейсы по разгону, пишите.

Теги