Pull to refresh

Тестирование производительности 1С на СУБД MSSQL 2022 и PostgreSQL 15 (на 20, 40, 60,80, 100 пользователей)

Level of difficultyMedium
Reading time7 min
Views14K

В начале 2024 года мы решили провести новое исследование производительности 1С на MSSQL и PostreSQL с целью:

  1. Сравнить производительность 1С на MS SQL 2022 и PostgreSQL 15 в режиме виртуализации, используя тесты Гилева, Апдекс и Fragster.

  2. Выяснить, подходит ли относительно устаревшее поколение серверов для виртуализации.

Тестовый стенд. Аппаратная часть

  1. Supermicro X9DRT-P*

  2. 2 x Intel Xeon E5-2667v2  3,3 - 4.0  GHz, each 8 Core.

  3. ОЗУ 512 ГБ DDR3 

  4. Хранилище RAID 10, Intel DC S4610 1.92 Tb

*В рамках исследования мы сознательно взяли устаревшую платформу, чтобы увидеть  разницу в работе ПО, без поправки на “быстрое” железо.

Тесты дисковой подсистемы

Тест проводился с использованием CrystalDiskMark. Параметры “Nvme SSD” файлом 32 ГБ.

Результаты теста дисковой подсистемы
Результаты теста дисковой подсистемы

Тестовый стенд. Программная часть

  1. Платформа 1С:Предприятие 8.3.22.2283.

  2. Конфигурации:

Конфигурация

Редакция

Объем базы

Примечание

1

1С:ERP Управление предприятием 2. Демо база.

2.5.8.179

4.2 Гб

Демо база с сайта 1С

В рамках тестирования мы используем стандартный шаблон "полный" на 33 пользователя 1С. Данный шаблон проходит 5 итераций, начиная с 20 пользователей на первой и 100 пользователей на последней.

Пример окна "Настройки запуска":

Настройка запуска теста Апдекс
Настройка запуска теста Апдекс

Тестовый стенд. Виртуальные ресурсы

  • Носитель виртуальных машин на Windows Server 2019 Datacenter

  • Сервер приложений 1С на WIndows Server 2019 Standart 

  • Сервер базы данных Windows на WIndows Server 2019 Standart + MS SQL 2022 Enterprise

  • Сервер базы данных Linux на Ubuntu Server 22.04.3 PostgreSQL 15.5

Выделяем ресурсы под виртуальные машины:

  •  Application сервер 1С - 12 ядер и 40 ГБ ОЗУ

  • MSSQL 2022 сервер -  16 ядер и 50 ГБ ОЗУ 

  • PostgreSQL сервер - 16 ядер и 50 ГБ ОЗУ

Общая методика тестирования

В рамках данной статьи мы применяем методику анализа используя абсолютные и относительные значения погрешности.  

Описание методики определения погрешностей:

  1. Определяются идеальные условия испытаний. В нашем случае это
    аппаратный сервер с ролями сервера 1С и MS SQL 2022, с активным режимом Shared memory. Исторически сложилось, что протокол Shared memory дает серьезное увеличение производительности системы.

  2. Производим расчет абсолютной погрешности

    Формула
    Формула

Проводим замер целевых значений:

  1. Проводим замер тестов АПДЕКС используя связки:
    1C (Windows) + MSSQL 2022 (windows)
    1C (Windows) + Postgres 15.5 (Ubuntu Server)
    конфигурация теста Апдекс - тест "полный", число пользователей 20\40\60\80\100

  2. Замеры проводим по одному разу, результаты вносим в таблицу.

  3. Выполняется тест Гилева.

  4. Выполняется тест Fragster. Тест “обычный”.

Примечание:

Тест 1C: КИП (АПДЕКС)

В основе методики АПДЕКС лежит набор инструментов 1с КИП. В данном случае использовался весь функционал методологии. Используются стандартная демонстрационная база ERP с сайта 1С.

Стандартная методология АПДЕКС использует прогрессивную шкалу от 0 до 1, где 1 -  это замечательный результат, а 0 - неудовлетворительный. Требуется указать целевое значение параметра производительности той или иной операции, создать сценарии и запустить тест. 

Оптимизация аппаратной части

Перед работой с носителем были произведены твики BIOS. В данном случае необходимо было вручную выставить или режим “Max Performance” в расширенных настройках CPU или полностью отключить энергосбережение в режиме “Custom”.

Стандартный режим “Max Performance”

Max Performance
Max Performance

Примечание:

  • Стандартный режим производительности. Получаем турбобуст до 4.0 ГГц при минимальных нагрузках: 

    • 3600 MHz (5 и больше ядер)

    • 3700 MHz (4 ядра)

    • 3800 MHz (3 ядра)

    • 3900 MHz (2 ядра)

    • 4000 MHz (1 ядро)

Или выставить настройки на скриншоте ниже:

Расширенный режим

Advanced CPU management
Advanced CPU management

Примечание:

  • Данные настройки применимы только к материнским платам серии X9. В других случаях настройки индивидуальны.

  • При применении режима Custom по итогу мы получим фиксированную частоту в 3.3 ГГц на всех ядрах в постоянном режиме.

Оптимизация программной части. Application сервер

  • Выставляем параметры электропитания Windows в положение “Высокая производительность”.

Оптимизация программной части. MS SQL сервер

Данных инструкций будет достаточно для базовой настройки SQL сервера.

Оптимизация программной части. PostgreSQL сервер

Установку и описание ключевых параметров файла конфигурации мы описывали в нашей прошлой статье.

Опишем основные применяемые твики:

  • random_page_cost  = 1.1 ( для SSD)

На этом всё.

Все основные параметры сборки от команды Postgres Pro подставляет сама, потому выкладывать конфиг смысла не имеет. 

Для большинства задач настроек хватит. Если же вы оперируете большими объемами данных и большим числом пользователей, то тут только тонкий тюнинг и совместная работа команд 1С и ИТ. 

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

# Обязательные для 1С настройки

standard_conforming_strings = off

escape_string_warning = off

shared_preload_libraries = 'online_analyze, plantuner'

plantuner.fix_empty_table = on

online_analyze.enable = on

online_analyze.table_type = 'temporary'

online_analyze.local_tracking = on

online_analyze.verbose = off

# Параметры, зависящие от объема оперативной памяти

shared_buffers = '2GB' # 25% ОЗУ

effective_cache_size = '6GB' # 75% ОЗУ

work_mem = '64MB' # 64-128MB

maintenance_work_mem = '256MB' # 4*work_mem

# активная работа с временными таблицами

temp_buffers = '32MB' # 32-128MB

# Требуется больше блокировок, чем 64 по умолчанию

max_locks_per_transaction = 256

Это интересно:

В 15 версии появилась очень полезное нововведение - работа со статистикой сразу в ОЗУ.

pg_stat_tmp — это каталог с данными статистики в PostgreSQL (критически важных данных там нет), но вследствие постоянной перезаписи (актуализации) этих данных (А в 1С их будет много при большом количестве пользователей), происходит сильная нагрузка на дисковую подсистему.  Из-за чего идет довольно быстрый износ фактически любого SSD диска, даже корпоративного уровня. Потому на версиях ниже 15, каталог pg_stat_tmp рекомендуется переносить в RAM диск, в 15 версии этого не требуется.

Тестирование. Тест Гилева

Результаты теста Гилева
Результаты теста Гилева

Это интересно:

При проведении теста на аппаратном сервере с ролью Hyper-V  тест показывает 30 единиц, а без - 37 единиц. 

То есть, если нам нужна максимальная производительность 1С - убираем роль Hyper-V с Application-сервера. Мы думаем дополнительные тесты проводить смысла нет, разница 20% существенная.

Выводы:

  • В рамках нашего тестирования MS SQL 2022 является лидером теста Гилева.

Тестирование. Апдекс

  1. Значение Апдекс на эталонном сервере:

Название

Значение Апдекс на эталонном сервере

20 users

40 users

60 users

80 users

100 users

Тест определения погрешности 1

0,832

0,865

0,831

0,827

0,789

Тест определения погрешности 2

0,856

0,871

0,842

0,815

0,757

Тест определения погрешности 3

0,856

0,857

0,848

0,829

0,763

Среднее значение

0,848

0,864

0,840

0,824

0,770

Относительная погрешность

4%

2%

2,50%

2,30%

5.5%

Абсолютная погрешность

0,03

0,02

0,02

0,02

0,04

  1. Значения Апдекс виртуальных машин:

Название

Значения Апдекс виртуальных машин

20 users

40 users

60 users

80 users

100 users

1C (Windows) + MSSQL 2022 (windows)

0,821

0,825

0,768

0,732

0,649

1C (Windows) + Postgres 15.5 (Ubuntu Server)

0,839

0,845

0.78

0.735

0,656

Апдекс на ВМ
Апдекс на ВМ
  1. Процентное отношение производительности Апдекс к эталонным значениям аппаратного сервера с учетом погрешности (меньше лучше):

Параметр

Процентное отношение производительности Апдекс к эталонным значениям аппаратного сервера с учетом погрешности (меньше лучше)

20 users

40 users

60 users

80 users

100 users

1C (windows) + MSSQL 2022 (Windows)

3,20% (в рамках погрешности)

2,50%

6,10%

8,7%

10,20%

1C (Windows) + Postgres 15.5 (Ubuntu Server)

1.06% (в рамках погрешности)

2.2%(в рамках погрешности)

4,6%

8,5%

9,30%

Выводы:

  • В рамках нашего тестирования PostgreSQL 15.5 является лидером теста APDEX в большинстве дисциплин.

Все результаты со скриншотами представлены в нашем гугл диске.

Тестирование. Fragster

Ввиду того, что тест генерирует больше количество табличных данных, результаты перенесены в гугл диск. Ниже сводная таблица по общим результатам:

Результаты теста Fragster (больше лучше)

Аппаратный сервер

PostgreSQL 15 ВМ

MS SQL 2022 ВМ

Временные таблицы

170 021,30

51 987,70

79 219,00

Справочники

32 430,20

14 575,40

12 838,90

Регистры сведений

23 083,40

10 477,10

9 338,70

Регистры накопления

17 733,40

9 382,10

8 446,40

Регистры бухгалтерии

21 963,60

10 150,70

9 169,30

Выводы:

В данном тесте лидером по всем параметрам является аппаратный сервер, что неудивительно. Следом идет Postgres. Все значения кроме работы с временными таблицами у Postgres выше.

Показатель временные таблицы является “бутылочным горлышком” в операциях проведения и формирования отчетов.

Из-за него, суммарная длительность пакета процедур, выполняемых в проведении документа, дольше на PostgreSQL.

Итоги

Основные выводы:

  1. Без виртуализации MSSQL 2022 показывает лучшие результаты во всех дисциплинах. Shared Memory повышает производительность.

  2. В режиме виртуализации Postgres 15.5 показывает лучшие результаты практически по всем параметрам.

  3. Разница между виртуализацией и аппаратными мощностями растет с ростом нагрузки, потому в высоконагруженных системах лучше использовать Standalone серверы.

Дополнительно:

  1. Поколение серверов на базе чипсета C602 c процессорами Xeon E5-2667 V2 без режима виртуализации с  MSSQL 2022 все еще можно использовать для продакшн структуры в качестве Standalone сервера 1C. Что касается виртуализации, то для старта данного железа хватит. Естественно, предельная нагрузка зависит от бизнес-процессов компании. Наш опыт говорит, что инфраструктура - это малая часть производительности 1С. Основное, что влияет - качество кода 1С.

  2. К синтетическим тестам стоит прислушиваться, но не возводить их результаты в абсолют. Разница в тесте Гилева по отношению к Апдекс тому подтверждение.

    С тестом Fragster мы познакомились относительно недавно, поэтому интерпретировать результаты сложно. По общим данным видно, что в большинстве дисциплин, кроме работы с временными таблицами, лидирует программный продукт от команды PostgresPro. Возможно, в будущем разработчик данного теста сможет более точно дать пояснения по результатам.

Если проанализировать наши прошлые исследования, то в минусах решений на базе Linux мы обычно указываем высокий порог входа.

В 2023 году ситуация изменилась. Внедрение и базовая настройка Postgres упростилась максимально. Для старта работы глубоких знаний не требуется, рунет обладает всеми необходимыми инструкциями. 

А работа с Linux? Сегодняшние реалии говорят, о том, что пришло время повышать навык работы с этой ОС. 

К минусам мы бы хотели отнести минимальную конкуренцию. Большинство представленных на рынке РФ систем баз данных имеют различные брендовые названия, но под капотом все тот же PostgreSQL. С другой стороны, компания 1С сможет сосредоточиться на оптимизации одного решения.

В дальнейшем будет интересно провести подобное исследование, перенеся PostgreSQL на аппаратные мощности. А вы как думаете?

Tags:
Hubs:
Total votes 9: ↑7 and ↓2+6
Comments22

Articles