Тестовый сервер 1с. Стандартный нагрузочный тест. Какой сервер лучше

Ходят слухи, что 1С (самая популярная система для бухгалтерского и управленческого учета) "тормозит" в облачных инфраструктурах.

Ходят слухи, что 1С (самая популярная система для бухгалтерского и управленческого учета) "тормозит" в облачных инфраструктурах. Еще есть мнение, что через несколько лет, компании малого и среднего бизнеса не будут приобретать сервера для 1С, а будут арендовать их в облаках и центрах обработки данных, так как это финансово эффективнее.

Наша команда решила провести тестирование доступных конфигураций серверов и выяснить - действительно ли 1С может успешно работать на виртуальных машинах и какое облако больше подходит для ее размещения. Финансовые аспекты оставим в качестве темы для другой статьи.

Подготовка

  1. Выбираем двух провайдеров услуг для размещения виртуальных серверов.
  2. Подготавливаем идентичные машины для тестирования - одинаковое количество ядер, памяти, объем дисков и их тип. Так же, важно одинаково настроить СУБД.
  3. Проводим нагрузочное тестирование на минимальной конфигурации. Фиксируем результат.
  4. Добавляем ресурсы и повторяем шаг 3. Так до тех пор, пока ресурсы не закончатся.

Наша конфигурация для тестирования

  • HDD для операционной системы - SSD
  • HDD для данных - SSD.
  • ОС - Windows Server 2016 Datacentr
  • СУБД - SQL Server 2016 SP1 Standard Edition
  • 1С Сервер x86 версии 8.3.10.2505.

1C Сервер и SQL Server установлены на одной машине. Включен и используется режим Shared Memory.

1С Предприятие запускаем на той же машине, где размещен сервер 1С и СУБД, чтобы устранить задержки сети и не зависеть от географического размещения ЦОД"а, в котором размещаем виртуальную машину.

Как тестируем

В качестве основы будем использовать тест от проекта www.gilev.ru

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

Теперь определимся с провайдерами. Возьмем мощности от лидера облачных решений - компании Microsoft с их облачной платформой под названием Microsoft Azure и в качестве второго провайдера будем использовать Облакотеку.

Microsoft Azure - постоянно растущая коллекция интегрированных облачных служб, которые разработчики и ИТ-специалисты используют для разработки и развертывания приложений, а также управления ими через всемирную сеть центров обработки данных. Благодаря Azure можно создавать и развертывать решения в любом месте, используя необходимые инструменты, приложения и платформы.

Azure размещается в 40 регионах по всему миру, для тестирования мы будем использовать Западную Европу, как наиболее близкий из доступных регион к нам.

На старт! Внимание! Тест!

Начнем тест с машин серии D-series v2. В частности, D1 v2 состоит из 1 ядра и 3,5 Гб оперативной памяти. Фиксируем результат:

Так как в Azure нельзя гибко добавлять ресурсы, а можно только использовать преднастроенные варианты виртуальных машин, переводим тестовый образец на D2 v2, в котором 2 ядра и 7 Гб оперативной памяти. Запускаем.

Все фото экранов с тестом Гилева приведены в галерее ниже. Там же опубликованы результаты теста 1С в файловом режиме - данные получены нами только для формирования общей картины, потому что, данный режим работы 1С не очень интересен предприятиям с числом пользователей более пяти человек.

Тариф Ядра Память Оценка комфорта Пользователей
B4ms 4 16 15,34 14
D1 v2 1 3,5 17,92 21
D2 v2 2 7 19,46 28
D2s v3 2 8 8,45 14
D3 v2 4 14 18,25 56
D4 v2 8 28 19,23 91
D4s v3 4 16 15,53 42
E2s v3 2 16 10,04 21
E4s v3 4 32 12,38 49
F4s 4 8 20,49 70
F8s 8 16 20,83 84
G1 2 28 13,26 56
L4s 4 32 17,67 56
L8s 8 64 15,82 98

"Оценка комфорта" - условная оценка быстродействия системы, включающая оценку частоты центрального процессора, количество ядер, частоту работы оперативной памяти и скорость работы дисковой системы. Показатель от 0 до 10 - плохо, 10 - 15 - удовлетворительно, 15 - 35 - хорошо, 35 - 60 - замечательно.

"Пользователей" - показатель характеризующий количество пользователей, одновременно и активно работающих с 1С Предприятие, не приводящее к деградации производительности. Другими словами, работать могут и большее число сотрудников, но, если они начнут одновременно выполнять какие-либо операции (а в большинстве случаев - это маловероятно), то быстродействие системы может ухудшиться.

Выводы

Проведя замеры на виртуальных машинах Azure в различных вариациях ядра/память, мы пришли к следующим выводам:

  1. Для работы 1С в клиент-серверном режиме с Microsoft SQL Server наиболее подходят машины F-серии и D-серии.
  2. Дисковая подсистема Azure Premium-класса (SSD-диски) не создает ограничений скорости работы 1С.
  3. Microsoft Azure прекрасно подходит для размещения 1С Предприятие.
Стоит сказать, что рассматривать тот или иной облачный сервис отдельно от денег - немного однобоко. Мы подготовим отдельную статью на тему финансовой эффективности такого подхода к развитию инфраструктуры предприятия.

Каждый специалист поддержки имеет опыт получения абстрактных жалоб со стороны пользователей. Всем знакомы формулировки: «она очень долго думает», «у меня красное окно», «система работает как-то не так», а также «этого давно не было, и вот опять».

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


Основные причины, влияющие на производительность 1С

Более чем в 60% случаев причинами низкой производительности оказываются:

  • Неоптимальные запросы и программный код конфигурации (26% случаев);
  • Неоптимальная индексация таблиц объектов (19% случаев);
  • Неоптимальная нагрузка на дисковую подсистему (16% случаев).

С этим солидарны и ведущие разработчики Microsoft

Таким образом, получить значимое улучшение производительности приложения базы данных, можно оптимизировать область доступа к данным, включая логическое и физическое проектирование баз (насколько это возможно в 1С), а также посредством создания правильных запросов и использования оптимальной индексации. Часть проблем с производительностью баз данных может быть решена с помощью наращивания аппаратных мощностей, но не всегда: неправильная проектировка прикладного решения не может быть компенсирована более мощным сервером. Не редки случаи, когда, не разобравшись с причинами проблемы производительности, компании-пользователи идут на серьезные затраты, приобретая новое оборудование, а проблема так и остается нерешенной.

Качественная диагностика производительности 1С с применением всего спектра существующих инструментов – залог успешного решения проблем и оптимизации затрат

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

Пример:

Не правильно: При формировании отчета программа «зависает». Хочу, чтобы формировала быстрее.

Правильно: Формирование отчета «Ведомость по задолженности» осуществляется 5 минут 10 секунд. Ожидаемая скорость формирования данного отчета – не более 20 секунд.

После того как перечень проблем составлен и оцифрован, необходимо провести анализ причин, начав с поисков проблемного кода, если таковой имеется (например, «тяжелые» запросы, длительные ожидания на блокировках, deadlock’и пр.).

Инструменты для идентификации проблемного кода

  • «1С:Центр управления производительностью» (модуль, входящий в инструментальный пакет «1С:Корпоративный», производителем которого является фирма 1С);
  • Облачные сервисы Гилева;
  • Штатные инструменты, встроенные в СУБД ведущих вендоров.

Эффективность использования данных инструментов гарантирует квалификация разработчика «1С:Эксперт по технологическим вопросам», подразумевающая его участие в масштабных внедрениях 1С. При этом разные эксперты, исходя из своего индивидуального опыта, могут отдавать предпочтения тому или иному инструменту/методу.

Параллельно с использованием одного из представленных инструментов, применяются и штатные средства мониторинга загрузки оборудования (счетчики «Performance monitors»).

На основании полученных замеров выявляется класс причины:

  • Проблема в коде;
  • И/или проблема в аппаратной части;
  • Проблема в других ресурсоемких программах, используемых на рабочих серверах.

Нагрузочное тестирование 1С – методика оценки серверного оборудования

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

  • Сервер 1С имеется в наличии и располагается:
  • Совместно с СУБД ;
  • На отдельном сервере.

Для оценки соответствия параметров имеющегося серверного оборудования требованиям системы необходимо произвести сбор данных по нагрузке на аппаратную часть, в том числе и на процессор, т.е. нагрузочное тестирование 1С. Для этого применяется «Performance Monitor» – инструмент, позволяющий произвести замер оборудования на рабочем контуре и снять счетчики производительности.

Ниже приведен базовый набор счетчиков, которые необходимо настроить для мониторинга производительности оборудования в ОС Windows. Сбор производится со всех серверов, где установлены серверы 1С.

Если показатель счетчика процента загруженности процессора для вида «Processor» имеет высокое значение, следует выявить процессы, которые можно остановить без ущерба для работы сервера, а также перенести на другие сервера.

Вид «Process» позволит настроить мониторинг для каждого отдельного процесса, а также определить, какие из процессов занимают больше всего процессорного времени. Если на сервере установлен только сервер 1С, то чтобы понять, какую нагрузку он дает на железо, необходимо настроить сбор следующих счетчиков:

\Process("1cv8*")\% Processor Time
\Process("ragent*")\% Processor Time
\Process("ragent*")\Private Bytes
\Process("ragent*")\Virtual Bytes
\Process("rmngr*")\% Processor Time
\Process("rmngr*")\Private Bytes
\Process("rmngr*")\Virtual Bytes
\Process("rphost*")\% Processor Time
\Process("rphost*")\Private Bytes
\Process("rphost*")\Virtual Bytes
\Process("1cv8*")\Private Bytes
\Process("1cv8*")\Virtual Bytes

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

Если приобретение серверного оборудования только планируется , рассчитать его параметры можно проэммулировав работу планируемой системы, но в меньшем масштабе, на имеющемся оборудовании. Для этого используется «1С:Тест-цент», который входит в Корпоративный инструментальный пакет 1С. На основании полученных замеров, с помощью методик расчета определяются параметры планируемой системы и, соответственно, требования к оборудованию. Данный тест можно использовать многократно под разные замеры, предварительно дополнив и расширив функционал. Эта методика имеет высокую точность и простоту расчета.

1С Тест-центр 8 — специализированный программный продукт фирмы 1С, который позволяет оценить производительность системы и изучить узкие места информационной системы.

Ранее мы рассмотрели на произвольную конфигурацию. Теперь же научимся создавать сценарии многопользовательского тестирования конфигурации пользователями и запускать само тестирование.

Сценарий тестирования в 1С Тест-центр пишется внутри специально созданной обработки. Шаблон такой находится внутри конфигурации, он имеет название «ТЦШаблонТестовойОбработки». Для создания собственного сценария теста необходимо скопировать данный шаблон и на основании него создать свой, новый, назовём его «Перепроведение поступления товаров»:

Добавим в обработку новый реквизит и выведем его на форму — «ДокументДляКопирования», это тот документ, который мы будем копировать.

Рассмотрим подробнее модуль формы. В нем можно использовать три процедуры — ТЦИнициализировать(), ТЦВыполнить(), Удалить().

  • ТЦИнициализировать — используется для начального заполнения настроек информационной базы, например, заполнение учетной политики.
  • ТЦВыполнить — основной модуль, в котором прописывается непосредственно сценарий тестирования.
  • ТЦУдалитьДанные — модуль, в котором описывается удаление объектов, созданных в процессе тестирования.

Напишем в процедуру ТЦВыполнить() простейший код, который будет 5 раз подряд копировать выбранный документ и замерять копирование и проведение каждого документа:

Для й=1 По 5 Цикл

Инструменты = КипВнешнийКомпонент.ПолучитьИнструменты();
ВремяНачала = КипВнешнийКомпонент.ЗначениеТаймера(Инструменты);

Получите 267 видеоуроков по 1С бесплатно:

СоздатьДокументы();

ВремяОкончания = КипВнешнийКомпонент.ЗначениеТаймера(Инструменты);
ДлительностьВыполнения = (ВремяОкончания — ВремяНачала) / 1000;

ТЦЗаписатьПоказатель(«ВремяВыполнения», ДлительностьВыполнения);

КонецЦикла;

Возврат ТЦРезультатВыполненияУспешно();

Процедура СоздатьДокументы() будет выполнятся на сервере:

Процедура СоздатьДокументы()

НовыйДокумент = ТЦОбъект.ДокументДляКопирования.Скопировать();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);

КонецПроцедуры

На этом подготовка сценария закончена, перейдем к Тест-центра для проведения нагрузочного тестирования.

Настройка 1С Тест-центр 8.3

После написания тестирования приступим к настройке самого Тест-центра. Для настройки необходимо заполнить ряд справочников:

  • Обработки — справочник, содержащий список обработок, подключенных к тестированию. Обработка может быть как внутренней, так и внешней.
  • Роли — справочник для хранения связки обработка-настройки обработки. Настройки — это данные, которые индивидуальны для каждого тестирования (количество итераций, копируемый документ и т.д.).
  • Пользователи — список пользователей и их паролей.
  • Компьютеры — список компьютеров, на которых будет выполнятся тест.
  • Клиенты — настройка того, где, от кого и в каком режиме будет запускаться нагрузочное тестирование.

Сценарии тестирования

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

Также на вкладке «Параметры» есть возможность настройки сценария тестирования технического характера:

После настройки сценария осталось только произвести его запуск.

Запуск тестирования в 1С: Тест-центр

Когда всё готово, останется только запустить работу тестирования.

Для этого необходим запуск минимум двух сеансов программы: первый — в роли т.н. «агента», а второй в роли инициатора запуска сценария.

Запуск агента:

Запуск сценария:

Для запуска достаточно выбрать из списка нужный сценарий и нажать на кнопку Выполнить.

Стандартный нагрузочный тест предназначен для оценки производительности серверного оборудования и программного обеспечения в так называемых «Стандартных пользователях 1С». Основная область применения данного теста – выбор конфигурации серверного оборудования и программного обеспечения для целей конкретного внедрения.

Решаемые задачи

  • Расчет производительности данной конфигурации серверного оборудования и программного обеспечения
  • Сравнение производительности различных конфигураций серверного оборудования и программного обеспечения
  • Выбор оборудования, необходимого для работы данной информационной системы
  • Расчет параметров оборудования, необходимого для работы данной информационной системы

Что оценивает тест

Тест оценивает производительность всей совокупности серверного оборудования и серверного программного обеспечения с точки зрения задач, типичных для систем, работающих на платформе «1С:Предприятие 8». То есть полученная оценка отражает не производительность какого-то одного серверного компонента системы (например, рабочего сервера кластера «1С:Предприятия»), а всей серверной конфигурации в целом. Серверная часть системы, производительность которой измеряется данным тестом, включает в себя:

  • все рабочие серверы, использованные для развертывания кластера «1С:Предприятия» и серверы СУБД
  • операционные системы всех рабочих серверов;
  • настройки операционных систем, «1С:Предприятия» и СУБД.

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

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

Если серверная часть системы недостаточно хорошо сбалансирована для работы с «1С:Предприятием», то при устранении узкого места (замене или апгрейде наименее производительного компонента) можно будет получить более высокую оценку производительности.

Следует обратить внимание на то, что тест никак не оценивает производительность клиентской части системы, поэтому этот фактор должен быть полностью исключен. Иначе говоря, клиентские рабочие места не должны стать узким местом системы. Этот вопрос более детально обсуждается в главе «Подготовка клиентской части тестового стенда».

Как работает тест

Стандартный нагрузочный тест представляет собой информационную базу «1С:Предприятия 8.2» с конфигурацией, основанной на «Управлении производственным предприятием». Конфигурация объединена с «Тест-центром 2.0», в состав которого включен один сценарий тестирования.

Сценарий тестирования включает в себя эмуляцию бизнес-процесса «продажи в УПП», а именно: создание нескольких различных документов, формирование отчетов и другие прикладные действия. Тест работает в режиме полной параллельности, то есть каждый пользователь работает с собственными уникальными данными, и ожиданий на блокировках не возникает. Пользователь выполняет один полный цикл продажи в минуту.

В рамках изучения возможности предоставления в аренду выделенных серверных мощностей не только для web-индустрии, но и для размещения разного рода информационных и учетных систем, нами была предпринята попытка качественной оценки производительности на примере функционирования в выделенной среде сервера приложений 1С версий 8.2 и 8.3 в связке CentOS 6.4+ PostgreSQL 9.1.2-1.1С, все программные компоненты (x_64).

В качестве физической платформы был взят сервер HP ProLiant DL120 G7 (CPU Intel Xeon E3-1230, 8 GB , 2 жестких диска SATA HP MB0500EBZQA без RAID), скорость интернет- соединения с сервером 100 Мбит/с, скорость соединения клиента варьировалась от 5 до 12 Мбит/с.

После ознакомления с многочисленными материалами и дискуссиями на различных интернет-ресурсах (таких как http://www.infostart.ru , www.3nity.ru , www.mista.ru , www.ixbt.com и др.), посвященных вопросам производительности приложений 1С в клиент-серверном варианте, было решено использовать свободно распространяемый тест В. Гилева (http://www.gilev.ru/tpc1cgilv/), результаты выполнения которого позволяют проводить качественное сравнение различной совокупности серверов и их компонентов, ОС, СУБД и версий серверов приложений 1С, с целью определения оптимальной конфигурации всего комплекса, в том числе и в ценовом диапазоне.

Результаты тестирования представлены на скриншотах:

Следует отметить достаточно заметное уменьшение результата теста на платформе 1С версии 8.3.3 (для версии 8.2.18 при прочих равных условиях количество баллов равнялось 60), что, видимо, связано с различием выполнения программного кода на разных платформах. Клиентская часть функционировала в режиме обычного приложения (толстый клиент).

Также была протестирована возможность многопоточной работы на примере следующего теста (http://infostart.ru/public/173394/). Этот тест позволяет оценить примерное количество одновременно работающих пользователей, при котором время отклика системы еще остается допустимым.