Исследование методов повышения производительности высоконагруженных web-систем

№43-1,

Технические науки

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

Похожие материалы

Введение

На сегодняшний день разработка высоконагруженных веб-систем ведется большим числом компаний. Доля пользователей интернета постоянно растет, востребованный сайт за короткое время набирает высокую посещаемость [9]. В результате, сейчас стоит задача усовершенствования аппаратных ресурсов, организации баз данных и разработки оптимального программного кода [1].

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

Целью данной работы является нахождение оптимальной архитектуры для сервера, которая будет использовать минимальное количество ресурсов, и которая будет отвечать всем нашим требованиям. Также повышение эффективности веб сервера, который сможет принимать большое количество запросов от клиентов. Исследование различных архитектур веб систем и их сравнение [7].

Основные задачи исследования:

  1. Оценка характеристик архитектуры наиболее известных высоконагруженных систем и разработка модели оценки нагруженности сервера.
  2. Разработка методики снижения нагрузки и построение тестового варианта высоконагруженной системы.
  3. Проведение тестов с разными подходами проектирования.

В качестве описания ситуации в предметной области был проведен обзор существующих архитектур Web - систем. Также было рассмотрены возможные сетевые проблемы и различные способы их решения. Еще одним важным моментом является анализ некоторых правил Web - оптимизации.

Говоря о высоконагруженных системах, для начала следует выяснить какие системы стоит считать нагруженными. Высоконагруженные Web – системы — это связка сервера и клиентской части, на которую приходиться большое число запросов за единицу времени.

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

Высокой нагрузкой считается такая нагрузка, которую «обычный» сайт не выдержит. Как правило подразумевается сотни/тысячи запросов в минуту.

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

Одним из главных частей любой Web-системы является сервер на диаграммах видно распределение от общего числа различных серверов:

Распределение Web - серверов

Распределение Web - серверов

Основные проблемы, которые возникают с высоконагруженными Web – системами – это проблемы с сетевой подсистемой. Особенно если говорить о пропускной способности того или иного ПО. Стандартная сетевая карта пропускает 1 Гбит/с, реальная же пропускная способность 800-900 Мбит/с это порядка 120000 пакетов в секунду.

Есть механизм, который позволяет соединить несколько физических соединений в одно логическое название у него Bonding. Объединение нескольких физических карт в один интерфейс, а конкретно 4 интерфейса дает 3,5 Гбит/с. Также существуют многопоточные сетевые карты MSI-X они имеют несколько очередей, позволяют разнести обработку на несколько CPU и считают контрольные суммы вместо CPU.

Если же говорить об полезных утилитах сетевой подсистемы, то это iperf, она позволяет создавать нагрузку нужной интенсивности (TCP и UDP). Утилита netstat-s – статистика по количеству различных пакетов и mpstat –P ALL – статистика по использованию CPU.

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

Можно выделить некоторые правила веб-оптимизации такие как осуществление меньшего количества запросов, принудительное кэширование статики, сжимание данных (gzip), использование keep-alive, избегание ненужных редиректов, минимизирование количество запросов к DNS, минимизирование количества файлов скриптов и CSS, необходимость вынесения долгих запросов в AJAX или iframe.

Скорость загрузки и количество запросов стоит смотреть в встроенных утилитах, которые есть в каждом браузере. Например, в Google Chrome – это Web Incpector.

Консоль Web Inspector

Консоль Web Inspector

Для экспериментальной оценки полученных теоретических результатов в качестве практических результатов планируется разработка Web - системы. Будут рассмотрены следующие методы проектирования: распределенность, кэширование и распараллеливание. В итоге получатся рекомендации внутренней организации высоконагруженных систем для уменьшения времени отклика системы [5].

Наиболее значимыми факторами, которые влияют на нагруженность серверов являются удаленность объектов (территориальное расстояние между объектами), загруженность канала, производительность рабочей машины и качество и пропускная способность канала.

В работах [3-4] описаны подходы к организации высоконагруженных Web - систем, основанные на использовании web-оптимизации, которые могут быть использованы в процессе решения поставленных задач.

После ознакомления с современными разработками сайтов под высокую нагрузку было разработана математическая модель оценки нагруженности на систему [8]. Далее необходимо разработать тестовый вариант Web - системы и проверить все способы оптимизации, это касается как frontend, так и backend составляющих. Далее следует рассмотреть принцип математического описания нагрузки с оценкой составляющих в шкале от 0 до 1 и введения весовых коэффициентов для каждого фактора, влияющего на нагрузку[6].

Для формализации описания Web-сервиса можно использовать несколько подходов. Во-первых, это подход базирующийся на использовании математического моделирования, модели массового обслуживания с параллельными каналами, Марковских процессов, статистических методов, модульного и объектно-ориентированного программирования. Во-вторых, это варианты распределения нагрузки по различным дисциплинам. В-третьих, это подход описания нагрузки на сервер как пуассоновский процесс.

Основными элементами интрасетей и Internet считаются серверы. В ответ на запросы они выдают информацию в виде текста, изображений, звуковых и видеофайлов, и кроме того их всевозможные комбинации. Web-службы, доступные в интрасетях и Internet, поддерживаются огромным числом разных серверов, использующих широкий диапазон аппаратного и программного обеспечения. Поддержка Web-служб гарантируется некоторыми видами серверов: Web-серверами, серверами транзакций, прокси-серверами, кэш-серверами, беспроводными шлюзовыми серверами и зеркальными серверами. Большая часть клиентов интрасетей и Internet - это Web-браузеры, совместно с собственными приложениями, к каким относятся: электронная почта, FTP и telnet. Программное обеспечение браузера дает возможность настольному пк соединяться с любым другим клиентом сети TCP/IP и различным сервером сети, обладающим определенный URL-адрес. Бизнес становится все более зависимым от применения Web-служб, по этой причине их рабочие характеристики (т.е. производительность) становятся жизненно важными. Чем больше информации и услуг возможно приобрести на Web-сайте фирмы, тем больше запросов он получает. А чем больше запросов получает Web-сайт, тем больше возможность, что пользователи очень долго будут ожидать реакции на свой запрос.

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

 A=\left ( N,KP,CR,Z \right ) , где:

KP – множество клиентских приложений;

N – это множество узлов для предоставления веб–контента, не зависимых друг от друга;

CR – множество веб–контента, к которым подключаются клиентские приложения;

Z – связи между KP, N и CR.

Каждый сервер обладает следующими характеристиками:

 f=\left \{ prop,mem,cpu,add \right \} , где:

itraff - пропускная способность интернет–канала узла (статический параметр), этот параметр задается в настройках узла и используется как максимально допустимое значение загруженности канала приложением;

memm – уровень используемой памяти узла (динамический параметр);

cpu – уровень использования процессора узла (динамический параметр).

address – уникальный адрес узла (статический параметр).

Веб–контент характеризуются параметрами: size – размер и type – тип веб–контента.

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

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

  1. Система, состоящая из трех и более узлов, разбивается на подсистемы;
  2. Определяется эффективность каждой подсистемы и выбирается наиболее эффективная;
  3. Определяется узел подключения в эффективной подсистеме.

Взаимодействие клиент-Web-cервер можно также рассмотреть, как конечный автомат в различных вариантах: в вариантах классического, с использованием ajax-запросов, реализации SPA-приложения. Одностраничное приложение (SPA) — это веб-приложение или веб-сайт, использующий единственный HTML-документ как оболочку для всех веб-страниц и организующий взаимодействие с пользователем через динамически подгружаемые HTML, CSS, JavaScript, обычно посредством AJAX. SPA напоминают родные приложения, с той лишь разницей, что исполняются в рамках браузера, а не в собственном процессе операционной системы. В итоге многие процессы происходят на стороне клиента, а значит меньше запросов и уменьшение нагрузки.

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

Компоненты Web-сервера

Компоненты Web-сервера

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

 P\left ( n,t \right )=\frac{\left ( \lambda t \right )^{n}}{n!}e^{-\lambda t}

где P(n,t) – вероятность поступления ровно n заявок, в нашем случае запросов за некоторый фиксированный интервал времени t; λ – интенсивность потока запросов. Здесь n – дискретная случайная величина, принимающая целочисленные значения: n = 0,1, 2, ..., а t > 0 и λ > 0 – параметры закона Пуассона.

Вероятность того, что на интервале времени t не появится ни одного события равна:

 P\left ( 0,t \right )=e^{-\lambda t}

 P\left ( T< t \right )=1-e^{-\lambda}

тогда вероятность противоположного события: где по определению P(T

 f\left ( t \right )=\frac{dF}{dt}=\lambda e^{-\lambda }

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

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

 j=1,...,n

 K\left ( i=1,...,m \right )

 f_{i}=\sum \lambda _{j}K_{ij}

Для содержимого сайта существуют следующие параметры, влияющие на нагрузку: А1 – большой объем текста кода, А2 – отсутствие кэширования, А3 – большое количество ненужных виджетов, А4 – большое количество ненужных плагинов, А5 – множественные запросы к базе данных, А6 – нет сжатия данных.

 A=\left ( A_{1},A_{2},A_{3},A_{4},A_{5},A_{6}\right )

В программном обеспечение сервера следующие параметры повышают время отклика все веб-системы в целом: В1 – проблема в обработке IP адресов, В2 – отсутствие распределения нагрузки, В3 – не ведется учет контекста, В4 – не отказоустойчивость.

 B=\left ( B_{1},B_{2},B_{3},B_{4}\right )

Производительность сервера зависит, в основном, от поведения его главных компонентов: оборудования и операционной системы. С точки зрения оборудования производительность сервера - это функция от количества и скорости процессоров (С1), объема оперативной памяти (С2), пропускной способности и объема хранимой информации в дисковой подсистеме (С3), а также пропускной способности сетевого адаптера (С4).

Web-серверы могут работать поверх многопользовательских операционных систем, функционирующих в режиме разделения времени, таких как Unix, Windows XP, Linux и др (С5).

 C=\left ( C_{1},C_{2},C_{3},C_{4},C_{5}\right )

Web-служба может представлять собой бизнес-процесс, приложение и даже вычислительный ресурс. К примерам Web-служб можно причислить все, начиная с услуг электронных платежей и заканчивая услугами распространения содержимого и хранения информации. Web-службы можно автоматически вызывать из приложений, а не только из браузеров. Следующие критерии можно отнести к классу приложения: D1 - протоколы, D2 – способы монетизации, D3 – распространение содержимого, D4 – хранение информации (БД).

 D=\left ( D_{1},D_{2},D_{3},D_{4}\right )

Пропускная способность и время – это две фундаментальные характеристики сетей, которые можно подвергнуть количественному анализу. Время ожидания отражает время, необходимое биту для прохождения через сеть от клиента до сервера или наоборот. Время ожидания сети подобно времени поиска на диске и задержке из-за вращения диска: минимальное время между запросом порции данных и началом их получения. Пропускная способность выражает скорость, с которой данные могут передаваться по сети, и обычно исчисляются в битах в секунду. Например, линия в 56 Кбит/с передает документ размером 100000 байт за 14.3 с, тогда как этот же документ может быть передан за 0.5с в случае использования линии Т1. В таблице приводится пропускная способность различных типов сетевых соединений.

Сетевое соединение

Теоретическая пропускная способность

Модем 56 Кбит/с

56 Кбит/с

ISDN 1 BRI (телефонная линия)

64 Кбит/с

ISDN 2 BRI (телефонная линия)

128 Кбит/с

DS1/T1 (выделенное соединение)

1.5 Мбит/с

DS3/T3 (выделенное соединение)

45 Мбит/с

Ethernet

10 Мбит/с

Fast Ethernet

100 Мбит/с

OC-3

155 Мбит/с

OC-12

622 Мбит/с

HDTV

1.2 Гбит/с

OC-48

2.5 Гбит/с

OC-192

10 Гбит/с

OC-48 с WDM

40 Гбит/с

OC-768

40 Гбит/с

Возможности сети

В итоге можно выделить следующие параметры: Е1 – пропускная способность, Е2 – время ожидания, Е3 – трафик, Е4 – специальные возможности сети.

 E=\left ( E_{1},E_{2},E_{3},E_{4}\right )

Инфраструктура Web включает в себя поставщика услуг Internet (F1), серверы в общем смысле (F2), брандмауэры (F3), прокси-серверы (F4), кэши (F5) и сети с соответствующими пропускными способностями (F6).

 F=\left ( F_{1},F_{2},F_{3},F_{4},F_{5},F_{6}\right )

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

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

A

B

C

D

E

F

Р1

+

+

-

+

±

-

3.5

Р2

+

+

±

-

±

-

3

Р3

-

±

±

+

-

+

3

Р4

-

+

-

-

±

+

3

Р5

-

+

-

+

+

-

3

ВЕС

2

4.5

1

3

2.5

2

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

 \lambda _{i}=K_{i}/\sum K_{i}

В итоге получается таблица с весовыми коэффициентами:

содержимое сайта

0,13

программное обеспечение сервера

0,3

оборудование

0,06

приложения

0,2

пропускная способность сети

0,16

инфраструктура

0,15

В общем виде целевая функция будет выглядеть так:

 f=0.13A+0.3B+0.06C+0.2D+0.16E+0.15F

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

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

Список литературы

  1. Плотников, Д.Ю. Разработка высоконагруженного веб-приложения / Д.Ю. Плотников, Е.Ф. Малёваный, А.Я. Аноприенко. - Донецк: ДонНТУ, 2012. - 431-435 с.
  2. Разработка высоконагруженных систем. По материалам конференции HighLoad 2010-2011. - М.: Издательство Олега Бунина, 2012. - 414 с.
  3. Руденко А.О., Мещеряков С. В. Сравнительный анализ программных средств балансировки ресурсов высоконагруженных приложений / Руденко А.О., Мещеряков С. В. // Научный форум с международным участием «Неделя науки СПБПУ»: матер. междунар. науч.- практ. конф., Санкт-Петербург, 2015 г. / СПБПУ. - Санкт-Петербург, 2015.
  4. Новиков О.В., Методы ускорения работф рекомендательных систем для высоконагруженных веб-сайтов / Новиков О.В. // Прикладная информатика: Московский финансово-промышленный университет "Синергия", Москва, 2013 г. / НИУ ВШЭ. - Москва, 2013.
  5. Симонова О.Н., Лясин Д.Н. Применение архитектурного шаблона mvc для разработки веб-приложений на языке php // Вестник магистратуры. 2014. № 4-1 (31) С. 13-15.
  6. Лясин Д.Н., Петров М.В., Саньков С.Г., Тыртышный А.И. Оптимизация web-приложений в гетерогенных системах по управлению качеством услуг // Журнал научных публикаций аспирантов и докторантов. 2010. № 4 (46). С. 178-179.
  7. Веремеевский В.В., Макушкина Л.А. Анализ эффективности использования алгоритмов балансировки ресурсов пользователей web-сервисов // NovaInfo.Ru. 2015. Т. 1. № 34. С. 61-69.
  8. Арбузов В.П., Абрамова О.Ф. Использование технологии landing page при проектировании современного сайта // Современные научные исследования и инновации. 2015. № 1-1 (45). С. 121-126.
  9. Рыбанов А.А., Рыльков А.В. Разработка web-ориентированной информационной системы мониторинга и управления процессом прохождения производственной практики // Молодой ученый. 2013. № 7. С. 34-36.