В статье рассматриваются вопросы построения имитационной модели веб-приложения в среде Palladio Bench по результатам тестирования производительности реального веб-приложения на базе Apache Tomcat с использованием приложения Apache Jmeter, чтобы определить архитектуру решения, выполнить эксперименты с помощью методики и алгоритма и получить новое знание.
Ключевые слова: имитационное моделирование, архитектура, системы массового обслуживания
Введение
В настоящее время у многих пользователей Интернета и других веб-систем возникают проблемы с производительностью, такие как долгое ожидание ответа при посещении различных веб-сайтов. Обычно веб-сайт состоит из одного или нескольких веб-серверов, которые обрабатывают входящие HTTP запросы, отправляемые пользователями. Скорость поступления новых запросов увеличивает максимальную скорость обслуживания, очередь и время отклика.
Моделирование производительности является важной темой в планировании требуемых вычислительных мощностей и обнаружения перегрузки веб-серверов. Без правильной модели администратору трудно сделать точный прогноз показателей производительности. Корректная модель является основой планирования мощностей веб-сервера, где модели используются для прогнозирования производительности системы в различных условиях.
Постановка задачи
Необходимо построить имитационную моделью JavaEE веб-приложения по результатам тестирования производительности веб-сервера на базе Apache Tomcat.
Метод решения задачи
При решении текущей задачи был использован инструмент Archi и язык Archimate чтобы составить диаграмму которая представляет собой задачу в зависимости от бизнес-роли (BusinessRole) «Тестировщик производительности» и «Моделист».
Рассмотренный язык Archi позволяет сделать конструкторские аспекты на уровне: Бизнес, приложение, технология. Причем структурные элементы на бизнес-уровне считаются статическими структурами организации, то есть единицами, из которых состоят организации и их связями между собой.
На основе концептуализации была определена каждая бизнес-роль в зависимости от её бизнес-функции и процессов. На созданной диаграмме показывается соответствующими технологиями, которые поддерживают выполнения бизнес-функции и как можно иметь доступ для обработчика данных.
Бизнес-роль «Тестировщик производительности» рассматривает три главные функции: 1) Определить план, которая состоит из функции определить параметры; 2) Выполнить тестирование, на которой нужно распределить: получить и сохранять результаты; 3) Проанализировать данные, которые тоже нужно проверить и получить параметры.
Бизнес-роль «Моделист» представляет собой четыре функции: 1) Определить модель, которая состоит из функции детализации компоненты; 2) Создавать модель, которая делится на: определение модулей и элементов; 3) Выполнить симуляцию модели, которая включает получение результатов; 4) Анализировать результаты. На диаграмме (рис. 1) показан уровень технологии и детализация взаимодействия между определенными функциями и поддерживаемыми инфраструктурами, а также их соответствующее артефакты.
Рис. 1. Данная диаграмма выполнена с помощью инструмента Archi
Методика тестирования производительности
При выполнении анализа и тестирования было использовано приложение Apache JMeter [5].
Для тестирования производительности веб-сервера на базе Apache Tomcat использовался тестовый стенд (см. рис.2). На сервере создан дочерний контейнер Virtual Box с установленной операционной системой Linux, в окружении ОС Linux установлены виртуальная машина Java и сервер приложений Apache Tomcat. Внутри сервера приложений Apache Tomcat запущено тестовое веб приложение. На сервере в родительской ОС запущена виртуальная машина Java с сервером приложений Tomcat, в котором работает веб-приложение Moskito для сбора информации об использовании процессорной памяти тестируемым приложением. С помощью языка Archimate [3] было построена архитектура стенда тестирования и выполнена в инструменте Archimate Modelling 3.3.1
Рис. 2.Архитектура стенда тестирования как система массового обслуживания
Для проведения нагрузочного тестирования использовался ноутбук, работающий под операционной системой Windows, в котором с помощью приложения Apache JMeter, работающего внутри виртуальной машины Java, создавался поток запросов на получение веб-страницы из тестируемого веб-приложения и при этом время отправления этих запросов и время получения ответов записывалось в файл. Кроме того, с сервера получались данные об используемой памяти и используемом процессорном времени, и дальше эти данные сохранялись в файле.
Перед началом тестирования производительности было проведено исследование исходящего потока заявок Apache JMeter на то, соответствует ли этот поток закономерностям экспоненциального распределения и результаты экспериментов показали, что при таких параметрах, поток исходящих заявок является пуассоновским.
Далее такая процедура тестирования производительности была проведена для разной интенсивности запросов из приложения Apache JMeter и получены графики зависимости времени обслуживания от интенсивности входного потока запросов.
Применялась следующая процедура обработки экспериментальных данных для проверки распределения задержки между пакетами на соответствие экспоненциальному распределению: из времени прихода заявки вычиталось время задержки для получения, времени отправки. Полученная таблица была отсортирована по времени отправки заявки. После этого была рассчитана задержка отправки между соседними заявками. Далее были отброшены начальные и конечные измерения, оставлена выборка 30 % данных из середины таблицы. После этого было рассчитано среднее время задержки, проведено разделение шкалы задержек на интервалы и подсчитано число попаданий значений задержек в разные интервалы.
Полученные результаты
Тестирование производительности проводилось при следующих параметрах виртуальной машины с тестовым приложением: размер RAM 512 Мб, процессор Core i7 860: ограничение на использование 50 % от одного ядра с частотой 2,80Гц.
В таблице 1 представлены настройки для проведения экспериментов при 70 и 90 процентах загрузки процессора.
Таблица 1
Настройки для проведения экспериментов по измерению производительности
На каждом из рисунков 3 и 4 представлены:
‒ Красным цветом: теоретические значения функции плотности распределения времени обработки запросов.
‒ Синим цветом: -нормализованные значения
Рис. 3. Эксперимент 1 при использовании JMeter
Где:
Рис. 4. Эксперимент 2 при использовании Jmeter
Где:
В результате тестирования производительности установлено, при заданных параметрах поток входящих заявок от JMeter является пуассоновским. Также было проведено исследование того, насколько процентов при увеличении интенсивности входящих сообщений загружается процессор и растет потребление памяти, была найдена точка, в которой загрузка процессора подходит к 100 процентам, после которой дальше уже само приложение завершается с ошибкой. Примем, что в этой точке мю (μ) равно лямбдa (λ), то есть поток входных заявок равен потоку выходных заявок. Исходя из этого мы можем посчитать μ и использовать это значение в модели.
Теоретические сведения
Существует разные методы для моделирования производительности веб-серверов, однако, часто такие модели являются сложными. В простой модели используется меньшее количество параметров, таким образом, ее легче построить и использовать, в то время, как сложная модель обычно содержит параметры, которые трудно получить и сложна в использовании.
Согласно [1] и [2], наиболее точным методом моделирования производительности веб-приложений является дискретно-событийная модель.
При анализе системы массового обслуживания необходимо использовать математическую модель, которая имитирует поведение системы дискретных событий с стохастической прибытия и временем обслуживания. Эта модель называется моделью дискретных событий. С помощью веб-метрика производительности сервера можно получить среднее время ответа, пропускную способность и вероятное блокирование при моделировании.
В определенных задачах была использована модель веб-сервера Apache, которая состоит из узла обмена процессора с очередью, прилагаемой к нему. Общее количество рабочих мест в системе ограничено. Процессы поступления на сервер предполагаются путем создания математических моделей. Также можно рассматривать абсолютно непрерывное распределение, моделирующее время между двумя последовательными свершениями одного и того же события, то есть можно рассматривать экспоненциальное или показательное распределение.
Модель веб-сервера
Далее по экспериментальным данным была создана имитационная модель веб-приложения. Для разработки модели был использован инструмент Palladio Bench 4.0 [4]. На рисунках ниже, представлена разработанная модель.
Рис. 5. Модель веб-сервера в JavaEE- Диаграмма хранилища
Рис. 6. Модель веб-сервера в JavaEE- Диаграмма системы
Рис. 7. Модель веб-сервера в JavaEE- Диаграмма размещения
Рис. 8. Модель веб-сервера в JavaEE- Диаграмма среда-ресурсы
Рис. 9. Модель веб-сервера в JavaEE- Диаграмма модель использования
Рис. 10. Модель веб-сервера в JavaEE- Диаграмма оправления сефф
Было проведено тестирование производительности разработанной модели веб-приложения в Palladio Brech для того, чтобы увидеть поведение модели и ее производительность в тех же условиях, в которых тестировалось реальное веб-приложение. Параметры для проведения экспериментов описаны в таблице 2.
Таблица 2
Параметры для проведения экспериментов вPalladio Bench
На рисунках 11 и 12 представлены графики, полученные при выполнении экспериментов с помощью симулятора веб-приложения в Eclipse Palladio-Brench. Можно считать потребностью в ресурсах, центрального процессорного устройства (ЦПУ). Соответственно можно рассматривать получен гистограмм поведения в зависимости от экспоненциального распределения.
Рис. 11. Эксперимент 1 при использовании JavaEE
Рис. 12. Эксперимент 2 при использовании JavaEE
Результаты экспериментов в Palladio показывали, что требования процессора поведения (ЦПУ) относительно модели веб-приложения не отличается поведением реального приложения.
Выводы
В результате тестирования производительности установлено, при заданных параметрах поток входящих заявок от JMeter является пуассоновским. Также было проведено исследование того, насколько процентов при увеличении интенсивности входящих сообщений загружается процессор и растет потребление памяти, была найдена точка, в которой загрузка процессора подходит к 100 процентам, в которой поток входных заявок равен потоку выходных заявок.
Исходя из этих параметров в Palladio Bench была построена имитационная модель, веб-приложения которая на том же входном воздействии ведет себя также, как и реальная система.
В дальнейшем процесс построения такого рода моделей может быть автоматизирован. А сами модели могут быть использованы для автоматизации таких задач администрирования, как повышение производительности серверных систем, управление развертыванием серверных приложений.
Литература:
- Robertsson, А. Wittenmark, В. Kihl, М. [Текст]. Аnalysis and design of admission control in web-server systems. Proceedings of the American Control Conference, 2003–6 с.
- Andersson, М. Cao, J. Kihl, М и Nyberg, С. Performance Modeling of an Apache Web Server. 4th International Conference on Internet Computing (IC 03), 2003–5 с.
- Archimate Modelling (Archi). Open source modelling tool: User guide. Доступ:http://www.archimatetool.com/downloads/latest/Archi %20User %20Guide.pdf
- Palladio- Brech 4.0 Eclipse 4.5 Mars based. Software Architecture Analysis Screencasts: Техническая документация на веб-странице Palladio. Доступ: http://www.palladio-simulator.com/en/tools/screencasts/
- Apache JMeter: Java приложение, предназначенное для загрузки тестового функционального поведения и оценки эффективности. Доступ: http://jmeter.apache.org/index.html