Нагрузочное тестирование сервера 1с. Стандартный нагрузочный тест

В рамках изучения возможности предоставления в аренду выделенных серверных мощностей не только для 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/). Этот тест позволяет оценить примерное количество одновременно работающих пользователей, при котором время отклика системы еще остается допустимым.

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для ролей сервера 1С, сервера СУБД MS SQL 2008 для 50 пользователей.

Согласно сервер-эксперту , собираем железо:

Выбираем платформу: IBM x3650 M3
Выбираем процессор: Intel Xeon E5506 - 1шт.
Выбираем оперативную память: 4 планки по 4Гб
Выбираем жёсткий диск: 3 SAS по 146 Гб RAID5

Используемое ПО:

ОС MS Windows 2008 x64
СУБД MS SQL 2008 x64
Сервер 1С 8.2 х64

Тестовая среда: для проведения нагрузочного тестирования использовалась конфигурация 1С 8.2: «Стандартный нагрузочный тест».

Ход тестирования:

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

Изначально (без пользовательских подключений) СУБД занимает 569 Мб оперативной памяти (созданы 2 БД: конфигурация 1С 8.2: УПП и тестовая конфигурация), занятая память системой составляет 2,56 Гб.
В ходе тестирования (до 110 пользователей) память под СУБД выделяется до 12 Гб, одна тестовая сессия 1С занимает 55 Мб (55Мбх200=11Гб). Для сравнения - одна реальная пользовательская сессия (клиентское приложение 1С) занимает около 300 - 500 Мб. Размер памяти, выделяемой для клиентского приложения 1С, указан для пользователя, работающего в стандартной конфигурации 1С: Торговля или 1С: УПП. Служба сервера 1С (rphost) практически не использует ОП, так как она лишь транслирует запросы от клиентской части к СУБД (по стандарту используется порт TCP 1541 и TCP 475 для сервера защиты 1С).

Использование ресурсов ЦП разделялось между службой сервера 1С (rphost) и службой СУБД (sqlservr). При нагрузке в 40 пользователей, rphost занимал 37% мощности ЦП, sqlservr занимал 30%. При нагрузке в 60 пользователей, rphost занимал 47% мощности ЦП, sqlservr занимал 29%.

Во время удаления созданных документов, служба sqlsrvr обращалась к дисковой подсистеме для записи на скорости до 6,5Мбайт/сек (около 52Мбит/сек).

Нагрузка на сеть между сервером 1С и СУБД (на локальных интерфейса lookback) составляла 10 Мб/с.
Результат тестирования, выданный тестовой конфигурацией 1С:

Параметры: Запуск теста 000000006 от 24.05.2012 12:44:16
Стандартный нагрузочный тест, версия 2.0.4.11
Начало тестирования 23.05.2012 12:36:39. Время выполнения: 57,1 минут.
Условия тестирования
«Сервер 1С: Предприятия: test
Имя информационной базы: testcenter_82
Виртуальные пользователи: TEST,»

Выводы:

Необходимо ослабить конфигурацию сервера, так как текущая является избыточной на 100% для 50 пользователей.
Необходимо выполнить тестирование, используя второй сервер для запуска эмулируемых пользователей и проверить нагрузку на сеть, ожидаемая нагрузка - 10 Мб/сек.
Архитектура 1С состоит из 4-х блоков: сервер 1С, СУБД, сервер защиты 1С и клиент 1С. В данном тесте все эти функции были запущены на одном сервере.

При большой нагрузке на сервер 1С есть следующие рекомендации:

Разносить роли сервера 1С, сервера СУБД, сервера защиты 1С и клиентские приложения 1С (для большего быстродействия клиентские приложения 1С лучше запускать на терминальном сервере).
На сервере СУБД необходимо использовать следующую структура для систем хранения данных: ОС должна располагаться на RAID 1, файлы данных СУБД (.mdf, .ndf) на отдельном RAID 0, файлы журнала (.ldf) на отдельном RAID 0, временные файлы и файл подкачки на отдельном диске.

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

В такой ситуации сходу разобраться, где кроется ошибка, и что предпринять в первую очередь, очень сложно. В этой статье рассмотрим от чего зависит производительность 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С. На основании полученных замеров, с помощью методик расчета определяются параметры планируемой системы и, соответственно, требования к оборудованию. Данный тест можно использовать многократно под разные замеры, предварительно дополнив и расширив функционал. Эта методика имеет высокую точность и простоту расчета.

Результаты нагрузочного теста TPC-1 производительности 1С по Гилеву для конфигурации с файловой базой данных:

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

  • временем операции
  • временем ожидания оборудования
  • временем логических ожиданий вроде блокировок

При этом ключевой характеристикой является скорость операции.

Примечание. Для процессора наиболее значимой характеристикой является частота процессора а не загруженность. Ниже скриншот результатов проведенного тестирования (Чтобы увеличить картинку - нажмите на нее).

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

Большинство существующих методов оценки производительности основывается на том или ином типе тестирования.

Можно выделить два основных типа тестирования: компонентное и интегральное.

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

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

В нашем тесте, как раз и используется такой подход.

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

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