1С в облаке: как повысить производительность приложений
Ни для кого не секрет, что 1С — достаточно требовательна с точки зрения размещения, будь то локальное «железо» или облачная инфраструктура.
В этой статье мы поговорим о тюнинге производительности систем 1С. Обсудим, какие узкие места в инфраструктуре могут повлиять на скорость отклика 1С, и дадим рекомендации по их устранению.
Производительность 1C складывается из суммы показателей производительности различных компонентов инфраструктуры, на которой развернута система. Это следующие компоненты:
- сервер баз данных,
- СУБД на сервере баз данных,
- сервер 1С,
- конфигурация 1C,
- сервер лицензирования 1С,
- терминальная ферма,
- рабочие места пользователей,
- сеть на каждом участке взаимодействия всех компонентов.
Компоненты инфраструктуры и их влияние на производительность 1С
Сервер баз данных (+ файловый сервер)
Сервер базы данных — основа любой системы. При оценке его работы необходимо обращать внимание на
- пропускную способность дисков в МБ/с, т. е. скорость чтения/записи данных;
- скорость дисков в IOPS, влияющую на скорость отклика базы данных;
- равномерность нагрузки на ядра CPU.
Методы оптимизации
- Разделение данных, логов, tempdb — классические методы оптимизации, которые применяются в том числе в облаках.
- Выбор правильного типа диска для каждого типа данных, например, не хранить «горячие» данные на HDD, а для tempdb выбирать самые быстрые диски, потому что пишется очень много данных.
- Разделение базы на активную и архивную, поскольку чем меньше база данных, тем быстрее ее обслуживает сервер. Соответственно, пользователи будут работать, в основном, с небольшим набором данных, а архив будет лежать на отдельных дисках, и к нему будут иметь доступ только те люди, которым он нужен.
- Разнесение баз на разные диски, например, если у вас есть информационная база, которая забирает все ресурсы диска. В целом рекомендуется сбалансировать базы таким образом, чтобы они друг другу не мешали. Возможно, даже разнести на разные серверы баз данных.
- Вынос вложений на файловый сервер, чтобы поддерживать небольшой размер базы данных.
Сервер СУБД на сервере базы данных
Для оптимизации работы сервера СУБД необходимо обращать внимание на
- потребление кэша;
- попадание в кэш и, в особенности, «вымывание» кэша;
- размер базы, блокировки (locks), ожидания (waits), дедлоки (deadlock);
- фулсканы таблиц;
- состояние статистики.
Методы оптимизации
- Методы, используемые для сервера СУБД, а также отслеживание загрузки дисков и размера базы данных.
- Регламентные процедуры для обновления статистики и перестроения индексов.
- Эксперименты с параллельным обращением. Например, если сервер 1C не очень любит параллельные запросы, можно попробовать сделать два-три потока на уровне СУБД вместо одного.
Сервер 1С
Необходимо обращать внимание на
- частоту процессора;
- равномерность нагрузки на ядра CPU (бывают ситуации, когда выделяется много ядер виртуальной машине, но в силу каких-то причин используются не все);
- скорость диска с логами – технологический журнал и журнал регистрации, в которые пишет 1С, должны лежать на быстром диске;
- количество активных сессий (если их слишком много, процессоры начинают «метаться» между ними);
- количество рабочих процессов;
- потребление памяти (рабочие процессы «съедают» всю оперативную память, если ее мало);
- контекстные переключения;
- редакцию (ПРОФ/КОРП) – если не хватает производительности, подумайте о переходе на лицензии КОРП.
Методы оптимизации
- Высокочастотный процессор и быстрые диски.
- Эксперименты с параметрами рабочего процесса, чтобы он не съедал большое количество памяти или не содержал большое количество сессий пользователей.
- Уменьшение числа информационных баз на одном сервере – лучше сделать несколько серверов в кластере поменьше, а не пытаться выгрузить на один сервер много баз (необходимо обратить внимание на контекстные переключения и эффективность работы процессора при большом количестве процессов).
- Разделение ролей по узлам кластера (для редакции КОРП), т. е. разделение функций по разным серверам.
- Разделение данных на активные и архивные на уровне 1С, поскольку чем меньше база данных, которая лежит под 1С (активная часть), тем лучше.
Конфигурация 1С
Конфигурация — это то, с чем непосредственно работают пользователи и что правят разработчики. С точки зрения влияния на производительность необходимо обращать внимание на
- процесс разработки и тестирования: иногда обновления, тестирование которых показало отличные результаты, выкатывают в прод, и сервер «ложится», потому что разработчик не учел, что обновление требует очень больших ресурсов, и с ним будет работать очень много пользователей;
- качество кода, особенно если его пишут неопытные сотрудники. Их работу должны всегда контролировать эксперты;
- встраивание APDEX в код для отслеживания происходящего в системе;
- оптимизацию запросов, чтобы пользователь получал из базы данных только нужные ему строки;
- полномочия пользователей, поскольку разным сотрудникам нужны разные объемы данных. Например, рядовому сотруднику можно ограничить запуск больших отчетов или работу с большими объемами данных, с которыми работает главный бухгалтер.
Методы оптимизации
- Тщательное тестирование кода перед выкаткой в прод.
- APDEX для ключевых и длительных операций. 1C позволяет встраивать в код строки с результатами запросов и с комментариями, чтобы можно было видеть выполняемые пользователями действия и причины сбоев. Например, если у двух пользователей 1C работает по-разному, APDEX позволяет выявить, что причина более медленной работы систем может заключаться, например, в том, что один пользователь запрашивает отчет за неделю, а другой — за год; т.е. дело не в том, что запрос работает медленно, а в том, что он обрабатывает большой объем данных.
- Запрет на выгрузку больших объемов для тех, кому это не нужно, поскольку сотрудники могут по незнанию выставлять неверные параметры и запускать большие отчеты, которые могут «положить» всю систему.
- Разделение данных на активные и архивные.
- Вынос вложений на файловый сервер.
Есть разные инструменты, с помощью которых можно измерить скорость работы конфигурации 1С. Например, тест Гилева, APDEX, внутренние инструменты 1С. Но надо понимать, что любой тест — это синтетика. Авторы вкладывают в тест определенные параметры.
Например, тест Гилева содержит фиксированный набор фиксированных операций, всегда в одинаковом количестве, и на каждой системе этот тест запускается абсолютно одинаково. Однако каждая конкретная система содержит и другие операции, которые могут микшироваться в разных пропорциях. Поэтому если у вас тест Гилева показал крутой результат, а на другой системе — результат похуже, это не обязательно означает, что эти системы действительно работают по-разному.
Внутренние тесты в 1С более приближены к реальности, а самый хороший, но самый дорогой тест — это роботы. Специалисты могут проанализировать работу вашей системы, выявить наиболее часто выполняемые операции и написать робота, который будет повторять действия именно так, как это происходит в вашей системе. Результаты такого теста будут максимально приближены к вашей конфигурации. Однако и этот тест останется синтетикой. В конце концов, единственный эффективный тест – это реальная нагрузка, которую создают пользователи системы.
Сервер лицензирования
Бывают случаи, когда ограничения на производительность накладывает сервер лицензирования, потому что он размещен далеко, например, за VPN с большим временем отклика, а 1C любит часто проверять лицензию. Соответственно, необходимо обращать внимание на
- местоположение сервера;
- нагрузку на сервер, т. е. получение быстрого ответа.
Методы оптимизации
- Размещать сервер рядом с кластером.
- Следить за нагрузкой и вовремя увеличивать параметры сервера.
Терминальная ферма
Администраторы делают больше всего ошибок именно здесь. Если правила использования сервера СУБД и сервера 1С все более-менее понимают, то терминал часто пытаются установить на одну машину, выдав ей огромное количество CPU и огромный объем памяти. Это делать не стоит, учитывая контекстные переключения и количество сессий. Процессору очень сложно работать с большим числом одновременных сессий.
Необходимо обращать внимание на
- количество пользователей на один узел;
- потребление CPU и памяти;
- контекстные переключения процессора;
- скорость дисков для профилей пользователей.
Методы оптимизации
- Следовать рекомендациям вендора по параметрам узлов (например, Microsoft рекомендует размещать не более 50 пользователей на одном узле – это оптимальное число, с которым узел справляется. CPU и память уже подстраиваются под задачи, которые решаются на терминальной ферме).
- Иметь запасной узел на случай выхода из строя или регламентных работ, чтобы пользователи могли переподключиться с минимальным влиянием на их работу.
- Отслеживать нагрузку на CPU и память и вовремя их увеличивать.
- Хранить профили пользователей на быстрых дисках, потому что клиент 1С хранит в профиле пользователей все временные данные. Таким образом, даже если сервер 1С быстро выдает данные, клиент 1С может задерживать выдачу данных пользователю из-за узких мест.
Рабочие места пользователей
Необходимо обязательно следить за тем, чтобы у пользователя было комфортное и быстрое рабочее место без лишнего ПО, и антивирус не съедал все ресурсы процессора, а также чтобы было стабильное подключение. Необходимо обращать внимание на
- характеристики рабочих компьютеров, тип клиента 1С (толстый, тонкий, веб);
- что установлено помимо клиента 1С;
- метод подключения к сети (WiFi, провод, VPN);
- скорость подключения к сети.
Методы оптимизации
- Правильно подобранное «железо».
- Правильно настроенное ПО, особенно антивирус.
- Быстрая сеть.
- Переключение пользователя на терминальную ферму, если нет возможности обеспечить хорошее рабочее место.
Сеть
Необходимо обращать внимание на
- пропускную способность сети;
- задержки по сети.
Методы оптимизации
- Располагать все компоненты как можно ближе друг к другу, в том числе все серверные компоненты, такие как сервер 1С, терминальный сервер, сервер лицензирования, что легко обеспечить в облаке.
- Для пользователей обеспечить быстрое подключение рабочего места или предоставить терминальный доступ. При этом VPN через спутник — не самое лучшее решение, потому что сервер может сформировать какую-либо форму за секунду, а до пользователя эта форма будет добираться минуту, и субъективно будет казаться, что медленно работает система 1С.
Как заставить 1С работать быстрее
Мы рассмотрели различные компоненты системы и их влияние на общую производительность работы 1С. Ответим теперь на вопрос: как заставить 1С работать быстрее?
Есть два основных сценария – добавление ресурсов и адаптация архитектуры системы.
Добавление ресурсов прекрасно работает на старте. Если система только начинает расти, а пользователей мало, можно увеличить частоту процессора, добавить количество ядер, поставить более быстрые диски и до поры до времени все будет работать хорошо. Но ресурсы заканчиваются, и вы столкнетесь с тем, что нужно менять оборудование.
Поэтому в определенный момент стоит задуматься об адаптации архитектуры системы под рост. В этом в первую очередь вам поможет мониторинг, который позволяет видеть динамику. После этого можно думать об изменении всех тех компонентов, которые мы рассмотрели: добавлять сервера, разграничивать роли, разносить данные, ускорять диски и т. д.
Отметим, что в облаке можно все это сделать очень быстро и эффективно, не дожидаясь нового оборудования.
Адаптация архитектуры – гораздо более гибкий способ, чем добавление ресурсов. Основное преимущество этого подхода — практически неограниченное горизонтальное расширение. Ограничением будет служить только размер облака и дата-центра.
1С в K2 Cloud: отвечаем на ваши вопросы
О производительности систем 1С в облаке
Влияет ли модель процессора на производительность базы данных?
На производительность базы данных влияет количество ядер, так как база данных – это работа с дисками. Чем больше потоков при обращении к дискам вы обеспечите, тем выше будет скорость. Частота процессора тоже будет влиять, но в меньшей степени и для сложных запросов.
Что вы можете сказать по поводу AMD Epyc для 1С в сравнении с Intel?
Опыта работы с этим процессором в нашем облаке нет, поскольку мы используем высокопроизводительные процессоры Intel® Xeon® Gold Processor 6348, 6244 и 6254.
Расскажите подробнее про активные и архивные данные
При работе с СУБД есть одно простое правило. Чем меньше размер базы данных, тем меньше расходуются ресурсы на работу с такой базой. Поэтому ту базу, с которой работают большинство пользователей, нужно стараться делать как можно меньше. Один из вариантов – разделить базу на активную и архивную. Например, документы, которые были проведены более года назад (или любой другой период в зависимости от потребностей вашей организации), можно положить в отдельную базу на отдельном сервере. Делать это можно с помощью регламентных заданий на уровне кода 1С. А для пользователей делать склейку данных, если они берутся из разных баз. Также можно выбрать другие критерии разделения. При таком раскладе ваша активная база всегда будет иметь небольшой размер, с ней легче будет работать, проще оптимизировать, обслуживать, бэкапить.
Как часто и какие выполняются регламентные работы, ребилды индексов, пересчет статистики и т.п., какое влияние на доступность/производительность 1С оказывается?
Частота запуска зависит от СУБД и от нагрузки. Можно начать от 1 раза в неделю и посмотреть на эффект. Далее либо уменьшать, либо увеличивать, либо оставить как есть. Процедуры оказывают значительное влияние на производительность, потому что планировщик строит оптимальные запросы.
О мониторинге 1С в облаке
Какой инструмент вы предлагаете для мониторинга производительности?
У нас используется Zabbix. Он дает возможность сбора данных со всех компонентов инфраструктуры либо из коробки, либо с помощью доработок. Для 1С мы забираем все, что есть в консоли администрирования, а также умеем разбирать технологический журнал, накладывая фильтры. Далее всю эту информацию можно свести в одном дашборде и анализировать.
Будет ли работать нормально RAS, если есть проблемы с производительностью 1С?
Если проблемы настолько жесткие, что на сервере катастрофически не хватает ресурсов, то есть вероятность, что RAS не будет отдавать данные. Но мониторинг в первую очередь настраивается для того, чтобы действовать превентивно и не доводить до такой ситуации (за исключением случаев, когда резко стало плохо, но и тогда у вас есть достаточно точное время начала проблемы, чтобы попытаться понять, что изменилось в этот момент).
Как вы можете прокомментировать встроенные средства мониторинга базы данных Tantor?
Очень хорошая платформа мониторинга и управления. Ее наличие является преимуществом этой СУБД по сравнению с другими продуктами. Однако надо учесть, что подключение сторонних сборок потребует покупки дополнительной лицензии. Для мониторинга самой Tantor она бесплатна. Если сравнивать с мониторингом с помощью Zabbix, то тут есть преимущество – платформа Tantor хранит планы запросов, поэтому вы всегда можете сравнить два запуска одного и того же запроса и проанализировать, что поменялось.
Можно ли быстро получить результат анализа итогов мониторинга?
Процесс анализа метрик по итогам мониторинга – это комплексный итерационный процесс, Иногда возникает потребность в длительном сборе данных, тюнинге и последующем анализе.
Преимущества K2 Cloud и поддержка 1С в облаке
Какая архитектура у облака K2 Cloud?
В основе облака лежит гипервизор KVM и программно-определяемые СХД и сети. ПО для управления облаком написано полностью нами. Используются процессоры трех моделей от Intel, диски SSD и HDD. Для дисковой подсистемы используется искусственное ограничение скорости в зависимости от типа и размера диска, что позволяет пропорционально обеспечивать заказчиков требуемыми ресурсами.
Какие есть типы дисков в облаке, количество IOPS?
Мы предлагаем 3 типа дисков: HDD и два SSD с разными ограничениями по IOPS (10 IOPS/GB и 50 IOPS/GB).
HDD можно использовать для размещения архивной базы, что позволяет сэкономить. SSD с лимитом 10 IOPS/GB нужно применять для системных разделов, где лежит операционная система, и для данных СУБД. На высокопроизводительных дисках с повышенным лимитом можно хранить tempdb, транзакционные логи и тому подобные части СУБД, а также журнал 1С, если он активно пишется.
Какой Postgre и Linux вы используете?
Разные в зависимости от потребностей заказчика. Отечественные сборки Postgre и дистрибутивы Linux также используем. На них есть спрос.
Есть ли у вас компетенции по системам 1С? Если проблема с IaaS – понятно, а если проблема с самой 1C, вы сможете помочь?
У нас есть 2 выделенных департамента, которые профильно занимаются развитием сервиса 1С как из K2 Cloud, так и на локальной инфраструктуре наших заказчиков. Мы можем решить такие вопросы, как аудит производительности, устранение проблем производительности, миграция с SAP на 1С, миграция с площадки на площадку, внедрение 1С, поддержка 1С и многие другие.
Решения по проблемам 1С будут предложены в рамках поддержки облака или это отдельная услуга?
Техническая поддержка до уровня бизнес-приложений – всегда отдельная услуга, которая рассчитывается по запросу. В рамках такой услуги могут быть предложены: аудит всех компонентов, обеспечивающих работу систем 1С на программном, аппаратном и инфраструктурном уровнях; формирование отчета об обследовании и выработка рекомендаций по устранению проблем; работы по реализации рекомендаций с целью устранения проблем производительности, параллельной работы пользователей и повышения качества функционирования системы; техническая поддержка систем 1С под ключ и др.
Ваше облако более выгодно по сравнению с арендой выделенного сервера?
Все зависит от технических параметров, которые необходимо оценить. В большинстве случаев облако дешевле выделенного сервера. В случае, если система требует стопроцентного использования ресурсов выделенного хоста и максимальной производительности, мы рекомендуем использовать услугу аренды выделенного узла в облаке. В нашем облаке есть гибкие тарифы в том числе на выделенные узлы, которые позволяют управлять ИТ-бюджетом с экономией для бизнеса.
Сколько баллов в тесте Гилева может получить система 1С в K2 Cloud?
35 баллов - http://www.gilev.ru/virtual/
Есть ли у вас специалисты, которые могут помочь со скоростью проведения документов в 1С:ERP? ПТУ по одному из контрагентов в среднем проводятся за 20 секунд (и это ночью без активных пользователей). Далее детали: настройки сервера по рекомендациям 1С сделаны в диспетчере задач, процессор загружен на 30%, очередей к дискам нет, сеть вроде тоже тянет. 512 ГБ ОП. В замере производительности на первой строке по времени 105 раз выполнение запроса (занимает 15% времени)
У нас есть группа специалистов, которые могут помочь с этой проблемой. Но надо понимать что это требует значительных усилий и привлечения специалистов уровня не ниже архитектора, чаще всего с сертификатом эксперта по технологическим вопросам. Будем готовы проанализировать вашу проблему и оценить работы по улучшению скорости проведения документов.
Какая стоимость услуги предоставления облачной 1С? Входят ли в стоимость услуги лицензии 1С, СУБД, ОС, системы резервного копирования?
Стоимость услуг предоставления инфраструктуры 1С из облака рассчитывается исходя из суммы виртуальных машин (vCPU, vRAM, vSSD, vSAS, vSATA) + ОС + СУБД + резервное копирование с нужной глубиной хранения и графиком РК + дополнительные услуги (сеть, лицензии RDS и др). Лицензии 1С также могут быть включены в стоимость и оказание услуги в формате «единого окна». Если вы направите нам запрос на расчет, мы вышлем бюджетную оценку согласно вашему текущему сайзингу.
Гарантируете ли вы backup на 100%?
Если речь про консистентность, то все зависит от метода резервного копирования, насколько инструмент умеет «морозить» базу данных. Этот механизм есть у проприетарных агентских решений, а также в облаке есть интеграция с Windows VSS и возможность запускать скрипты для подготовки СУБД на Linux посредством облачного агента (по аналогии с VMware Tools). Но в любом случае резервные копии нужно периодически проверять на возможность восстановления, равно как и отрабатывать механизм восстановления всей системы – от сервера приложения до сервера СУБД.
Чем ваша поддержка отличается от поддержки 1С?
Скоростью и сервисностью: мы отвечаем быстрее, мыслим понятными для заказчиков категориями и действительно решаем проблемы.