Рубрики

Реалистичное нагрузочное тестирование на 1000 пользователей

Статьи по теме:

Технологическая экспертиза крупных внедрений и консультирование

Реалистичное нагрузочное тестирование

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

О нашем опыте, который, на наш взгляд, очень важен для всего сообщества 1С, на вопросы корреспондента отвечает главный идеолог проведенного тестирования Евгений Филиппов.

- Для начала, расскажите, пожалуйста, что послужило причиной, заставившей провести такое исследование.

- Все понимают, что одновременная работа даже 30 пользователей это не работа 1-2 пользователей. Есть конкуренция доступа к информационным ресурсам и к аппаратным ресурсам и связанные с этим проблемы производительности. Но был открытый вопрос – что произойдет, когда пользователей в одной базе не 30, не 100, а 1000? Какие в этом случае будут возникать сложности?

Чтобы получить ответ на этот вопрос, мы взяли типовую конфигурацию «1С:Управление производственным предприятием 8» и предоставленное Центром инноваций IBM оборудование.

Запустили 1000 пользователей, заставили их всех отрабатывать типовой тестовый сценарий Закупки-Продажа-Производство.

Убедились, что это работает, и работает хорошо: система с нагрузкой справляется, Оборудование не перегружено, время проведения большинства документов от 1 до 7 секунд, ошибок блокировок не наблюдается.

- Это главный итог. Каких еще результатов удалось достичь?

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

Убедились, что это не предел. Увидели и возможности для роста.

Потом вспомнили, что у нас есть полностью бесплатная DB2 Express-C.

Решили посмотреть, чего можно достигнуть, имея ограничения бесплатной версии.

Запустили 300 пользователей, убедились, что если с пониманием относиться к тому, на что влияют ограничения бесплатной версии, то и это работает. Увидели, какие ЗДЕСЬ есть возможности для роста.

В итоге на одной основе получилось 2 решения.

- Что за решения?

- Собственно, решение – это собранный стенд, на котором все наши пользователи работают в одной базе, и при этом система справляется с нагрузкой.

Из чего все состоит:

  • технологическая платформа 1С:Предприятия 8, 64-битная
  • конфигурация «1С:Управление производственным предприятием 8»
  • СУБД IBM DB2 9.7
  • Сервер СУБД IBM System P под Linux
  • Сервер IBM под MS Windows для кластера серверов 1С, на максимальной нагрузке – кластер на двух серверах. Обязательно, все – 64-битное.

- А расскажите, пожалуйста, поподробнее о каждой составляющей.

- Начнем с технологической платформы 1С.

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

Вторая компонента решения - конфигурация «1С:Управление производственным предприятием 8».

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

Третья компонента – «1С:Корпоративный инструментальный пакет 8»

Это действительно мощный, удобный и доступный в освоении инструмент обслуживания системы и проведения исследования производительности. Без этого инструмента проведение нашего тестирования оказалось бы крайне затруднительным или невозможным. Один пример. 1000 запущенных сеансов 1С, которыми надо управлять: заставлять выполнять определенные действия при подготовке и проведении теста, опрашивать их самочувствие, и так далее. Могу даже сказать, что в ряде моментов эта работа требует весьма серьезных вычислительных мощностей, сопоставимых с нашей основной задачей.

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

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

Четвертое – СУБД IBM DB2

Когда мы говорим про повышенную производительность, сокращенное время восстановления после сбоев, пониженные требования к администрированию, на самом деле мы имеем в виду вот какие три вещи:

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

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

Третье – легкость освоения администрирования.

- Многие побаиваются DB2 и вообще командной строки, Linux и AIX тоже не исключение. Считается, что специалисты по этим направлениям – редкость, а значит, стоят дорого. Что на это можно сказать?

- Можем сказать всем – боятся зря. Совершенно нет ничего сложного, в том, чтобы, владея навыками администрирования других СУБД, начать работать c DB2. На дообучение азам уйдет всего 1-2 дня. Дальше - самодиагностика и автооптимизация, благодаря которым глубокого тюнинга системы, особенно на первых порах, совершенно точно не потребуется.

Инструкция по установке есть в базе знаний на сайте вопросов крупных внедрений, она очень хорошая.

Еще для начала надо знать совсем немного, я сейчас перечислю:

  • какие рекомендовано установить буферпулы;
  • как установить размер LOGFILSIZ в 16384 вместо 1024 по умолчанию;
  • как делать бэкап.

Как видите, не так много. С этими знаниями смело можно начать работать, остальное доберете уже по ходу.

- И как скоро потребуется добирать?

- Когда дойдете до 600 пользователей, надо будет в /etc/sysctl.conf

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

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

Вообще – очень многие проблемы по DB2 решаются просто гуглением, я лично рекомендую пользоваться документацией с сайта ИБМ, там все очень внятно изложено.

Пятая компонента – сервера system P. Два факта.

Один факт: на нагрузке в 1000 пользователей на 4-процессорном сервере СУБД вся работа шла на одном процессоре, при этом и он не сильно напрягался. Но это, понимаете, Power6, вещь серьезная.

Второй факт: сервера system P, если можно так выразиться, очень легко изменяют свою геометрию. То есть, если нам надо было протестировать работу 1-процессорного сервера с 2-мя ГБ памяти, мы шли к сотруднику Центра инноваций и говорили: сделайте нам такую конфигурацию. Через несколько минут мы работали уже на 1-процессорном сервере. Если нам через какое-то время требовалось тестировать 4-процессорный сервер с 16 ГБ памяти, мы опять шли к сотруднику Центра инноваций и говорили: сделайте нам такую конфигурацию. Через несколько минут мы имели запрошенное. При этом для нас ничего не менялось вообще: просто становилось меньше процессоров и памяти в нашем распоряжении, а в чьем-то, или в резерве - больше. Этим можно пользоваться. И нужно.

Говорил про это на корпоративной конференции, в зале не верили, говорили – фантастика. А на самом деле это так, семечки, там все еще интересней.

- Компоненты решения понятны. Продолжим про вашу работу.

- Итак, мы это все собрали и начали подключать пользователей.

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

Система с нагрузкой справилась.

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

И по итогам мы говорим: «Да. Это - работает».

- Расскажите подробнее, как это все размещалось.

- 7 машин всего.

Из них два очень мощных сервера IBM X3950M2 с запущенными клиентскими местами. 650 на одном и 350 на другом. Сервер приложений, разнесенный на 2 физических сервера, половина на блейде IBM HS21, половина на оставшихся ресурсов одного из X3950M2. И сервер СУБД сервере IBM System P на DB2 9.7. Классические 3 уровня: клиент – сервер приложений – сервер СУБД.

Обратите внимание, основная нагрузка на оборудование – на компьютеры, на которых запускаются клиентские места. В реальных условиях – 1000 машин, а в наших – всего две, но по 64 ГБ ОЗУ на каждой. Это было первое и основное узкое место при организации тестирования – найти, на чем этих пользователей запустить. Дальше все стало проще.

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

Подробное описание будет в статье, которую сейчас готовим.

- Как вообще их столько запустить?

- На каждом сервере сделали несколько учетных записей, штук по 8. Сделали ярлычок, в котором указали все параметры запуска, чтобы сразу происходил вход в нужную базу с нужным пользователем, и запускалось ВРМ. Написали обработку, которая из пустой базы каждые 5 секунд этот ярлычок запускает. Под каждой из учетных записей можно запустить на 64-битной архитектуре на такой машине где-то до 240 пользователей, но чтобы сессия совсем живая была, лучше поменьше, до 150. Цепляемся в терминал пятью-шестью учетными записями, и из пустых баз наши обработки стартуем, можно даже несколько одновременно, четыре выдерживало, потом еще четыре.

- А ключи защиты?

- Про ключи. Ключи – обязательно на отдельные машины, nethasp.ini режем до минимума, оставляем в нем минимум строчек: только TCP/IP, единственный адрес менеджера лицензий, и запрет на бродкаст. Если работаете с большими (300 и 500) ключами, посмотрите в документации, как nhsrv.ini настраивать, там есть параметр, который обязательно надо редактировать.

- Но на одной машине 650 пользователей, то есть пришлось с одной машины обращаться к двум ключам. Как была решена эта задача?

Если с одной машины 2 ключа хотите видеть – делайте 2 копии каталога 1С, в каждой в nethasp.ini по одному ключу, для одних учетных записей один каталог, для других – другой, и ntfs-ными правами закрывайте видимость для не своих учетных записей. Чтобы не подглядывали в чужие ini-файлы. Такое может быть, если каталоги неудачно расположены.

- Что делали пользователи.

- Они выполняли типовой тестовый сценарий из Тест-центра «Закупки, производство и продажа».

Представьте себе 4 помещения: отдел сбыта, отдел снабжения, цех и склад. В каждом – по 250 операторов, сидят и выполняют свою ежедневную работу: отслеживают заказы, обеспечивают потребности, отражают выпуск, оформляют отгрузки. Вот документооборот – обычная текущая работа, они ее сидят и делают. Каждые 7-8 минут – новый документ на 10-15 позиций. При этом, и в этом некоторое отличие от реальной жизни, этим пользователям предоставлена полная параллельность по данным. То есть, они никогда не должны пересекаться по одинаковым элементам справочника Номенклатура. При такой настройке необходимых ожиданий на блокировках нет, и нагрузка на оборудование – максимальна.

А система дает им возможность это делать в таком количестве.

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

- Может ли быть больше?

- Может. Найти только, на чем еще тысячу клиентов запустить.

- А что с бесплатной версией?

- Дальше мы решили по той же методике проверить, что будет, если у нас есть ограничения бесплатной версии DB2 Express-C. Она ведь на самом деле ничем не отличается от старших редакций, только ключами, которые открывают использование ряда возможностей.

Под это требование и конфигурацию сервера сильно срезали: 2 ядра процессора, 2 ГБ памяти.

Запустили 300 пользователей – работает.

Может ли быть больше – зависит уже от конкретных задач.

- Какие возможности для роста?

И для одного и для другого случая они примерно одинаковые.

Первая возможность. Дисковая подсистема сервера СУБД, ее скорость работы. Взять более шустрые диски, или больше дисков в дисковом массиве – сразу получаем прирост производительности.

Вторая. На сервере СУБД должно быть достаточно оперативной памяти. 1000 пользователей требуют 11-12 ГБ памяти на сервере СУБД, тремстам – для комфортной работы чуть нужно больше четырех. В случае, если ее не хватает, а это как раз существенное ограничение бесплатной версии – 2ГБ, сильно возрастает нагрузка на диск, и мы именно в него упираемся. То есть 2 возможности - более шустрые диски или переход на платную версию DB2.

Третья. Процессор на сервере 1С:Предприятия. К счастью, легко масштабируется. А в 8.2 еще и динамически распределяет нагрузку.

- Кому Вы рекомендуете в первую очередь обратить на ваши результаты внимание?

Вообще-то всех.

А если серьезно, то, во-первых, заказчиков, или партнеров, имеющих потенциальных клиентов, переходящих на 1С с более дорогих систем. У них сразу высокие требования к производительности. Мы увидели – тысяча работает, тысяча – не предел для 1С.

Во-вторых, заказчиков или тех партнеров, у кого есть клиенты, у которых все крутится вообще на одном сервере – и сервер 1С:Предприятия и сервер СУБД, и иногда терминальный сервер к тому же, и кому сейчас не хватает аппаратных ресурсов для роста системы. Смотрите – недорогой сервер СУБД с бесплатной DB2 Express-C под Linux может решить проблемы развития системы.

И, конечно, всех тех, кто хочет снизить порог входа в проект.

 
ГК Трейд Софт, Москва
Автор: Филиппов Е.В.
Дата публикации: 07.09.2009 г.
(0.031 c.)

Мы Вам перезвоним

*
*
 

Я даю Согласие на обработку персональных данных в соответствии с Политикой Конфиденциальности