Исследования механизмов оптимизации времени отклика веб-приложений Скачков Д.А.
Скачков Дмитрий Андреевич / Skachkov Dmitry Andreevich - аспирант, кафедра компьютерных сетей и систем, факультет электроники и компьютерной инженерии, Кременчугский национальный университет имени Михаила Остроградского, г. Кременчуг
Аннотация: проведен анализ методов оптимизации времени отклика веб-приложения. Определены требования для работы внешнего модуля оптимизации SQL запросов. Определены условия использования статического кэширования. Ключевые слова: веб-приложения, оптимизация нагрузки, оптимизация веб-приложений.
За последние годы бизнес в интернете претерпел значительные изменения. Веб-приложения, ранее являвшиеся системами для распространения статического контента, стали представлять собой платформы для реализации интерактивных, персонализированных, распределенных информационных систем бизнес уровня. Одной из приоритетных задач для разработчиков веб-приложений стала оптимизация веб-приложений, выраженная в уменьшении времени отклика или приведение этого показателя к подходящим для использования.
В исследованиях отечественных и зарубежных авторов рассматривается вопрос оптимизации программного обеспечения лишь с целью увеличения отказоустойчивости, оптимизации процесса проектирования и детектирования проблем в производительности программного обеспечения, однако должного внимания вопросу оптимизации времени отклика веб-приложений уделено не было [1,2,3]. На основе существующих исследований в области увеличения производительности программного обеспечения были рассмотрены и адаптированы механизмы увеличения отклика веб-приложений [6] на всех прикладных уровнях работы веб-приложений. Уровни работы веб-приложения требующие анализа и оптимизации: работа веб-приложения в существующей инфраструктуре (архитектурные решения), взаимодействие с базой данных, реализация функциональных компонентов (выполнение кода ПО), взаимодействие с пользователем.
Вопрос архитектурной (аппаратной) реализации балансировки нагрузки веб-сервера с целью уменьшить время отклика веб-приложения актуализирует необходимость разработки алгоритма для балансировщика с учетом особенностей веб-приложений. Для элемента архитектуры реализующего балансировку предлагается использовать алгоритм, основанный на коэффициентах загрузки узлов. Определим коэффициент узла как L = —, где LA - Load Average узла, Rn - доля от
lm RnLA
общего числа обращений к веб-приложению, m - число доступных узлов. Узлы недоступные из-за загрузки (LA>30) не участвуют в работе алгоритма, при условии, что доступные узлы есть.
На уровне middle-end за балансировку нагрузки, как правило, отвечает прокси-сервер, установленный на уровне front-end и позволяющий не только кэшировать часть контента и создавать еще один уровень безопасности системы, но и распределить пользователей по узлам. Такой подход к проектированию архитектуры, может быть горизонтально масштабирован и дополнен аппаратными средствами кэширования (рис. 1).
Рис. 1. Архитектура веб-сервера для балансировки нагрузки веб-приложения
Во многих случаях, при размещении веб-приложения в shared хостинге, использование аппаратных средств кэширования недоступно. Из-за стоимости реализации, подобный подход к уменьшению времени отклика веб-приложений стоит рассматривать как корпоративное решение, требующее значительных денежных затрат.
В условия невозможности использования аппаратных средств для уменьшения отклика веб-приложений одним из способов повышения эффективности работы веб-приложений является оптимизация SQL запросов. Структуру запроса можно изменить средствами рефакторинга клиентского программного обеспечения, но в связи с динамическим наполнением БД продолжительность корректности синтаксической формы запроса выбора данных существенно сокращается.
Возможным решением проблемы является применение внешней оптимизации SQL-запросов для выбора данных до их выполнения средствами СУБД. Инструментарий для внешней оптимизации запросов должен быть использован в серверной архитектуре, в рамках которой функционирует веб-приложение. С помощью инструментария происходит мониторинг запросов к базе данных от функциональных элементов веб-приложения, выделяя запросы с возможностью оптимизации или оценивая интенсивность запросов от каждого из функциональных элементов. Такой подход имеет ряд преимуществ:
1. внешний оптимизатор не зависит от типа и версии СУБД;
2. использование внешней оптимизации запросов исключает модернизацию и внедрение дополнительного кода в веб-приложение;
3. анализ запросов производится в любое время работы веб-приложения.
Существуют недостатки такого подхода. Внешний оптимизатор нуждается в собственной БД для сохранения промежуточных и окончательных конструкций запросов.
При перехвате SQL запроса Q, модулем внешней оптимизации следует выполнить поиск такой синтаксической структуры запроса Q е Q , которая бы семантически соответствовала перехваченному запросу Q О Q, сохранила все
и удовлетворяла
его свойства, такие как: объем данных Уд, = V'д и мощность результирующего отношения конечному условию: время выполнения оптимизированного запроса должно быть меньше времени выполнения входящего запроса ^ ^ '} и условию оптимальности синтаксических эквивалентов ^ тш{д/}.
Дополнительными способами увеличения скорости работы веб-приложения является кэширование. Кэш может находиться в сервере БД, сервере приложений (интегрированный кэш), прокси-сервере, веб-клиенте. Выбор расположения кэша зависит от характеристик доступа к кэшируемым объектам и от возможностей хранилища.
Преимуществом внешнего кэша является лучшее соотношение стоимость/быстродействие. Такой кэш может быть реализован на аппаратном обеспечении, у которого нет накладных расходов на операционную систему (управление процессами, управление памятью). Интегрированный кэш может использовать фрагментарное кэширование, имеет большую гибкость управления хранимыми данными, позволяет использовать систему авторизации для доступа к хранилищу.
1. Кэширование страниц на стороне веб-сервера. При использовании серверного кэширования кэш находится на стороне сервера, на котором работает веб-приложение, и кэширование производится на уровне запросов к БД, фрагментов динамических веб-страниц. Такое кэширование позволяет снизить нагрузку на сервер и снизить задержки при выдаче контента.
Сложность кэширования динамических объектов заключается в том, что необходимость в нем не всегда очевидна, поскольку если стоимость кэширования объекта выше стоимости генерации объекта, то в кэширование при работе системы с пользователем.
Одним из способов увеличение скорости генерации элементов веб-приложения является статическое кэширование. Результаты анализа загрузки страниц со статическим кэшированием страниц представлены на рисунке 2.
При использовании статического кэширования, в случае повторного обращении к странице запросы к базе данных не осуществляются, и не задействуется интерпретатор.
4000 3000 2000 fl" 1000 О
',1 1 1 III
Г1J ч!г д ■ 14 J |ш .1 1 1 W'Uj и),
О 50 100 150 200 250
"■"Static cache, ms Without static cache, ms
Рис. 2. Загрузка с использованием статического кэширования
Обусловить необходимость использования статического кэширования можно из расчета, что удовлетворяется условие R < tl > tu , где tl- время жизни кэшированной страницы, tu- интенсивность обновления этой страницы, R - интенсивность запроса кэшируемой страницы.
2. Кэширование страниц на стороне клиента. Современные браузеры (IE7+, Firefox 3+, Chrome) способны сохранять страницы посещаемых сайтов, и оперировать загрузкой на основании дат изменения страниц. Получая информацию о дате изменения страницы из технических заголовков (формируемых веб-сервером) браузер принимает решения о новой загрузке страницы или представления сохраненной версии.
3. Предварительная генерация страниц на стороне веб-сервера. Дополнительным методом увеличения скорости загрузки страниц является предварительная генерация страниц. Этот метод рекомендуют использовать при статическом кэшировании и кэширование в базу данных. Для реализации этого метода необходимо генерировать запрос ко всем страницам веб-приложения, что может стать причиной роста нагрузки на аппаратные ресурсы сервера.
Проведен анализ методов оптимизации времени отклика веб-приложения. Представлен алгоритм для балансировки нагрузки веб-сервера, на основе коэффициентов нагрузки узлов.
Определены требования для работы внешнего модуля оптимизации SQL запросов. Описаны преимущества и недостатки использования модуля внешней оптимизации SQL запросов.
Установлено, что использование статического кэширования позволяет значительно снизить нагрузку на сервер. Определены условия использования статического кэширования.
Литература
1. Авен И.О., Гурин Н.Н., Коган Я.А. Оценка качества и оптимизация вычислительных систем. М.: Наука, 1982.- 463с.
2. Антонов А.В. Системный анализ. Учебник для вузов. М.: Высшая школа, 2006,- 454с.
3. Быков М.Ю. Методы и средства разработки компонентного управления Web сайтом на основе динамической объектной
модели: Диссертация на соискание ученой степени к.т.н. М., 2005.- 183с.
4. Валиков А. Технология XSLT. СПБ.: БХВ.2002.- 544с.
5. Вентцель Е.С., Овчаров JI.A. Теория вероятностей. М., 1969, 368 с.
6. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования (пер. с англ.). СПб.: Питер.2001.- 368с.
7. Закас, Мак-Пик, Фосетт. Ajax для профессионалов. М.: Символ-Плюс, 2007.- 488с.
8. Запечинков С.В. Информационная безопасность открытых систем в 2-х томах. Том 1. Угрозы, уязвимости, атаки и подходы к защите. Учебник для вузов. М.: Горячая линия -Телеком, 2006.- 536с.
9. Интернет-порталы: содержание и технологии. Сборник научных статей. Выпуск 1. / Редкол.: А.Н. Тихонов (пред.) и др.;
ГНИИ ИТТ «Информика». М.: Просвещение, 2003. 720с.
10. Интернет-порталы: содержание и технологии. Сборник научных статей. Выпуск 2. / Редкол.: А.Н. Тихонов (пред.) и др.; ГНИИ ИТТ «Информика». М.: Просвещение, 2004. 499с.