Привет, Хабр! На связи Денис Рачковский из «Первого Бита» и Михаил Семёнов, владелец продукта Platform V Pangolin из СберТеха. Недавно в «Первом Бите» завершилась миграция с MSSQL на новую СУБД Platform V Pangolin. За три месяца мы протестировали новое решение, перевезли на новую СУБД 7000 рабочих мест и действующие инсталляции 1С. В этой статье расскажем, как происходило тестирование, почему «Первый Бит» выбрал Platform V Pangolin и что в итоге получилось.

Задача: переехать на новую СУБД самим

Внутренняя инфраструктура в «Первом Бите» работала на MSSQL. В начале марта 2022 года Microsoft заявила, что сворачивает бизнес в России и прекращает поддержку своих программных решений.

Использовать неподдерживаемую СУБД сложно и рискованно — нужно было искать решение, которое позволило бы заменить Microsoft без деградации производительности, безопасности и отказоустойчивости. Нужно было не только мигрировать самим, но и подготовить специалистов, способных перевести на новую СУБД около 250 тыс клиентов «Первого Бита». Не самая простая задача. Например, важно было продумать:

  • Как перевезти собственную инфраструктуру на новую базу данных и обеспечить совместимость с продуктами 1С.

  • Как решить вопрос с администрированием. Обычно для миграции приходится зарываться в код и переписывать множество функций — это требует времени и ресурсов. Поэтому искали простую в администрировании СУБД.

  • Что делать с безопасностью. СУБД должна была обеспечивать защиту чувствительных и защищённых данных.

Про выбор СУБД

Практически сразу исключили open source. PostgreSQL, например, соответствовал требованиям компании по производительности, но не подходил по критериям безопасности. С установкой и интеграцией тоже возникли бы вопросы, так как переписать, переделать интеграционные процессы и собрать с нуля новую структуру данных без специалистов по PostgreSQL невозможно. Да и стоимость лицензии сыграла не последнюю роль: цену enterprise-версии сегодня едва ли можно назвать демократичной.

В итоге выбор пал на Platform V Pangolin — реляционную СУБД уровня enterprise, разрабатываемую в СберТехе. Вот какие аргументы убедили «Первый Бит» использовать именно это решение:

  • Соответствие стандартам безопасности: в Platform V Pangolin добавлено гибкое управление парольными политиками, защита от привилегированных пользователей и т. д. — то, что гарантирует высокую защищённость данных.

  • Относительно удобный интерфейс администратора: переводить системы и управлять СУБД можно, даже не обладая глубокими знаниями в базах данных.

  • Интеграция с 70+ сервисами Platform V: интеграционной платформой Platform V Synapse, облачным сервисом для разработки backend- и frontend-приложений Platform V DataSpace и другими. Это значит, что дополнительную функциональность можно писать на микросервисах платформы, интегрируя с базовой функциональностью 1С. Клиенты таким образом получают комбо: отказоустойчивую масштабируемую платформу, которая интегрирована с 1С, и возможность реализовать собственную функциональность.

Установка и тестирование

Тестирование проводилось на сервере HP ProLiant BL460c gen8 (Intel Xeon CPU E5-2690 v2, 3 ГГц, 384 Гб RAM). На сервер установили гипервизор VMWare ESXi версия 6.7.0, и далее всё собрано на виртуальных машинах.

Стенд Platform V Pangolin:

  • сервер СУБД: Alt Linux 9.9, 4 ядра, ОЗУ 16 Гб, SSD на 200Гб;

  • сервер 1С: Windows Server 2019 Standart, 4 ядра, ОЗУ 16 Гб, SSD на 200Гб.

Стенд MSSQL:

  • сервер СУБД: Windows Server 2019 Standart, SQL server 2016 Standart,

  • сервер 1С: тот же.

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

Как проводилось тестирование

С помощью инструмента тестирования прикладных решений Vanessa Automation в режиме тонкого клиента подготовили автоматические сценарии. Проверялись следующие операции:

  • Создание, заполнение и проведение основных документов: поступление (акты, накладные, УПД), реализация (акты, накладные, УПД), поступление на расчётный счёт, списание с расчётного счёта, поступление и выдача наличных, передвижения по спискам выбранных документов.

  • Формирование ОСВ по счетам, формирование общей ОСВ.

  • Закрытие месяца.

Операции делили на документы по приходу и по расходу, чтобы в момент тестирования не возникало недостатков на счетах. Цикл включал 60 повторений оборота документов в каждом месяце, с января 2022 года по июнь 2022 года. Обработка происходила в 10 потоков.

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

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

Что показали тесты: Platform V Pangolin vs PostgreSQL

Поскольку механизм запросов изначально был заточен под MSSQL, нам важно было проверить разницу в производительности систем под нагрузкой. А для большей объективности решили добавить в тесты ещё и «ванильный» PostgreSQL.

План был такой: 

  1. Последовательно запускаем СУБД в стандартной сборке. 

  2. Оцениваем разницу в производительности. 

  3. Меняем и докручиваем настройки базовых сборок. Снова оцениваем разницу в производительности.

  4. Продолжаем тестировать настройки и собираем кластерные сборки Platform V Pangolin и PostgreSQL.

  5. Повторяем пункты 2 и 3 до получения показателей, аналогичных «боевым».

На первых этапах, до экспериментов с настройками Platform V Pangolin, сводные тесты показали следующие результаты:

Сценарий

Количество транзакций в секунду

PostgreSQL

Platform V Pangolin

PostgreSQL сluster 

Platform V Pangolin сluster

Приходные документы

30

21

41

20

Расходные документы

32

29

46

26

Денежные документы

7

4

12

4

Формирование отчётов

5

3

3

3

Закрытие периода

52

44

192

116

Итог (с учётом количества повторений)

4752

3684

7272

3876

Итог, %

137,5 %

106,6 %

210,4 %

112,2 %

Вот какие настройки при этом использовались.

MSSQL

Настройки по умолчанию, без включения мгновенной инициализации файлов базы данных или какие-либо изменений в tempdb.

Platform V Pangolin

  • row_security = off — отключили политику защиты строк;

  • pg_stat_tmp = '\ramdrive' — перенесли каталог хранения временных данных статистики pg_stat_tmp в память (ОЗУ).

С учётом имеющейся памяти (16 Гб) выставили параметры:

  • temp_buffers = 256MB;

  • shared_buffers = 6GB;

  • effective_cache_size = 10GB;

  • work_mem = 128MB — в зависимости от размеров БД и памяти можно пробовать изменять значение в большую и меньшую сторону;

  • maintenance_work_mem = 1GB.

Порядок ведения транзакций:

  • full_pages_writes = off — отключение этого параметра ускоряет обычные операции, но может привести к неисправимому повреждению или незаметной порче данных после сбоя системы;

  • synchronous_commit = off — cоздаёт риск потери последних нескольких транзакций, но гарантирует целостность базы данных.

Рекомендация для SSD диска:

  • effective_io_concurrency = 200;

  • random_page_cost = 1.2.

Рекомендации 1С:

  • bgwriter_delay = 20ms;

  • bgwriter_lru_multiplier = 4.0;

  • bgwriter_lru_maxpages = 400.

Вакуум таблиц:

  • autovacuum = on;

  • autovacuum_naptime = 20s;

  • autovacuum_max_workers = 4 — зависит от количества ядер. 

С четырьмя ядрами настроили количество служебных процессов:

  • max_worker_processes = 4;

  • max_parallel_workers_per_gather = 2;

  • max_parallel_workers = 4;

  • max_parallel_maintenance_workers = 2.

Прочие опции:

  • max_files_per_process = 8000;

  • geqo = on #генетический оптимизатор запросов;

  • geqo_threshold = 12;

  • standard_conforming_strings = off;

  • escape_string_warning = off;

  • max_locks_per_transaction = 192.

В результате уже на первых этапах тестирования Platform V Pangolin продемонстрировал производительность на уровне действующих показателей. Для миграции промышленного контура этого было достаточно, поэтому, не останавливая тестирование и поиск оптимальных настроек, команда начала миграцию в продуктив.

Эксплуатация в продуктиве

Для миграции подготовили однонодный сервер Platform V Pangolin и перенесли на него рабочую базу 03.11. Сейчас на СУБД работает система «Зарплата и управление персоналом КОРП», редакция 3.1 (3.1.18.616) на платформе 1С:Предприятие 8.3 (8.3.17.1989):

  • количество активных пользователей — 150;

  • количество пользователей всего равно количеству сотрудников — 7000+;

  • количество документов ежемесячно — более 10 000.

На текущий момент деградации производительности и проблем с функциональностью системы не выявлено. Пользователи фактически не заметили изменений.

Итоги

Миграция — дело не быстрое, поэтому пока что можно подвести только промежуточные итоги. Они такие: СУБД была запущена менее чем за три месяца без остановки основных процессов и эффективно обслуживает более 7000 мест. «Первый Бит» продолжает тестирование с новыми настройками и постепенно приближается к целевому результату производительности.

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

В ближайшее время планируем рассказать о тестировании совместимости продуктов Platform V Synapse и 1С, которое проводит «Первый Бит». Интеграционная платформа Platform V Synapse должна помочь клиентам «Первого Бита» управлять взаимодействиями между различными экземплярами 1С и внешними системами, обеспечивая высокий уровень надёжности и простоту создания интеграционных взаимодействий.

Комментарии (13)


  1. SergeyMax
    06.06.2023 12:20
    +7

    temp_buffers = 256MB;

    shared_buffers = 6GB;

    effective_cache_size = 10GB

    Какая интересная новая СУБД. Жаль, что open source не подошëл.


    1. CptAFK
      06.06.2023 12:20

      Я зашёл в комментарии узнать внебрачная дочка чего эта диковинная СУБД, а вы тут ребусами пишите))


  1. Tahallus
    06.06.2023 12:20
    +5

    Пишите "Использовать неподдерживаемую СУБД сложно и рискованно" и тут же на стенде VMWare ESXi и Windows Server 2019 Standart. И плюс Pangolin это та же самая PostgreSQL. Не удивлюсь если Pangolin еще и перебрендированный Postgres Pro.


    1. rombell
      06.06.2023 12:20

      Не, там реально допиливали с ванилы, и некоторые фичи, которые есть в ПРО, второй год пытаются запихнуть в панголин.


  1. klis
    06.06.2023 12:20

    Вы настолько кастомизировали постгрес, что он по дефолту стал работать в 2 раза медленнее? Красавчики!

    В результате уже на первых этапах тестирования Platform V Pangolin продемонстрировал производительность на уровне действующих показателей

    Результаты насколько стыдные, что таблицу после оптимизации даже приводить не стали?


  1. nick-for-habr
    06.06.2023 12:20

    А где в табличке с замерами цифры по MS SQL?

    Какая конфигурация по ресурсам была у MS SQL? У PostgreSQL?

    Что-то оптимизировали вроде, а какой результат получен? Что на счёт оптимизации других СУБД?

    Ничего этого нет.

    Видим что Панголин "из коробки" слил неплохо так даже своему братику PostgreSQL (по MS SQL видимо совсем стыдно), но вывод - "и так сойдёт, пользователи-то ничего не заметили". Логика железная, чО...

    На жалких 150 юзерах можно тупо ресурсами залить сервер, и пользователи не заметят что они на MySQL пересели, не то что на клон Postgre. Кстати ваши "10k документов в месяц" - это 1 документ в 4,5 минуты(!). Можно бумажные оригиналы сканировать с такой скоростью (и распознавать при этом через OCR) - и пользователи то же "ничего не заметят".

    И да, между "MS" и "SQL" принято ставить пробел, уж извините. Ибо "Microsoft SQL Server" называется продукт.


  1. nirom
    06.06.2023 12:20

    Зарплата и управление персоналом КОРП, 150 активных пользователей пользователей, 7000 сотрудников? Вот ну не верю.

    Первый Бит тут конечно хитрит, следовало бы написать, что речь идет о пользователях сервиса личного кабинета ЗУП. Т.е. это не те пользователи, кто целый день работает в программе, непосредственно набивает документы, рассчитывают зарплату и сдают отчетность. А это очень существенный момент.

    Даже при более крупном штате, именно расчетом зарплаты занимаются 1-2 человека. Такая специфика. Я лично знаю расчетчика, который сам вел расчеты 2500 сотрудников и это была обычная практика, а сейчас, с введением электронных трудовых, электронных больничных и прочих благ, соотношение ещё больше.


  1. unfilled
    06.06.2023 12:20
    +1

    Порядок ведения транзакций:

    full_pages_writes = off — отключение этого параметра ускоряет обычные операции, но может привести к неисправимому повреждению или незаметной порче данных после сбоя системы;

    synchronous_commit = off — cоздаёт риск потери последних нескольких транзакций, но гарантирует целостность базы данных.

    А вы, кхм, отчаянные...

    fsync ещё в off - и вообще залетает!


  1. rombell
    06.06.2023 12:20

    Так а чем, собственно, данные мигрировали-то? Или вы только справочник перенесли в панголин, и всё на этом?


  1. itmind
    06.06.2023 12:20

    Как 1с подключили к Platform V Pangolin если данной СУБД нет в списке поддерживаемых? Не является ли это нарушением использования лицензии 1с?


    1. nirom
      06.06.2023 12:20

      Platform V Pangolin совместима с postgresql, которая из коробки поддерживается платформой 1С. Т.е. вся миграция сводится, к тому чтобы штатными средствами платформы 1С сделать backup в виде dt-файла и так же штатно загрузить на сервере Platform V Pangolin.

      Никакие работы собственно в статье и не описаны.

      Да, да. Работы на три месяца и, видимо, бюджет дохренненый.


      1. klis
        06.06.2023 12:20

        Всмысле "совместима"? Это и есть постгрес под капотом. Который только медленнее работает, судя по тестам из этой же статьи. Скорее всего, какое-нибудь шифрование сбоку приделали.


  1. yazuzenko
    06.06.2023 12:20

    Облачные сервисы 1с Фреш и 1с ГРМ работают на Postgres. В них возможно не работают настолько высоконагруженные области данных, но все равно немного странно.