Больше не нужно искать работу мечты — присоединяйтесь к команде Клауда

Нагрузочное тестирование сервера: цели, задачи и процедура тестирования

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
27 октября 2022 г.
1731
6 минут чтения
Средний рейтинг статьи: 5

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

Обработка Данных В Flask (1)

Что такое нагрузочное тестирование

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

Почему стоит использовать тесты: цели тестирования

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

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

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

Шаг за шагом: инструкция по нагрузочному тестированию сервера

Для начала давайте разобьем всю процедуру на последовательные этапы:

  1. Подготовка к тестам. Перед проведением нагрузочного тестирования следует провести функциональное, которое выявит правильность выбранных инструментов и конфигураций.
  2. Определение задач. Наиболее типичные: определение границ производительности сервера и выявление узких мест системы.
  3. Указание требований. Требования должны быть четко сформулированы, например: 90% пользователей должны обслуживаться в течение максимум 10 секунд каждый.
  4. Разработка сценариев. Сценарии составляются исходя из типичного поведения пользователей сайта, приложения или сервиса.
  5. Выбор инструментов. Нужно подобрать ПО, максимально отвечающее поставленным целям.
  6. Настройка программ. Должен быть задан уровень нагрузки и написаны скрипты для имитации поведения пользователей.
  7. Тестирование. Последовательное увеличение нагрузки с фиксацией критических точек.
  8. Анализ результатов. Работа с полученными данными в результате тестов и составление рекомендаций по улучшению производительности системы.

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

О задачах и требованиях

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

Если говорить о требованиях, то они тоже бывают разными, но чаще определяют времени обслуживания пользователей в процентах. И здесь важно знать, что стремление к 100% обслуженных пользователей в течение определенного времени неразумно, поскольку нужно оставлять запас (обычно около 10%). Запас понадобится, например, для действий системы, которые она выполнит при возникновении нештатной ситуации.

О пользовательских сценариях

Здесь всё зависит от того, как устроена работа пользователей на сайте. Вот один из сценариев на примере интернет-магазина:

  • Авторизация
  • Поиск и выбор товара
  • Переход в карточку найденного товара
  • Помещение его в корзину
  • Переход в корзину
  • Переход к оформлению покупки
  • Заполнение полей в форме
  • Подтверждение покупки и оплата

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

Инструменты для тестов и их настройка

Если позволяют задачи, разумно пользоваться бесплатными инструментами для тестирования. Одним из самых популярных является JMeter от Apache. Это гибко настраиваемое кроссплатформенное ПО, которое поддерживает все веб-протоколы. Кроме того, под JMeter легко разрабатывать скрипты, имитирующие действия посетителей сайта или пользователей приложения. После разработки скриптов в программе задается уровень нагрузки, и тестировщики приступают к главному процессу.

Добавим, что JMeter не единственное приложение для нагрузочного тестирования. Для некоторых задач используются WAPT, NeoLoad, Siege, Gobench, WRK, Curl-loader, Tsung и ряд других инструментов. Каждый из этих продуктов имеет свои особенности, и перед выбором одного или нескольких стоит внимательно изучить их описания и дополнительную информацию (многое можно почерпнуть в обзорах и на тематических форумах).

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

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

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

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

Нагрузочное тестирование web-сервера: анализ

Анализируем собранные тестировщиками данные и выявляем «узкие» места. В некоторых случаях проблему можно решить, просто изменив настройки или поправив код. Бывает и так, что из нескольких сервисов проекта тормозит работу какой-то один, и тогда нужно поработать с ним. Это решается изменением настроек или масштабированием. Но при значительном количестве пользователей наиболее частая проблема заключается в перегрузке физических мощностей. Так что придется провести модернизацию аппаратной части: добавить оперативной памяти, перейти на более производительный процессор и т. п.

Вместо заключения

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

27 октября 2022 г.
1731
6 минут чтения
Средний рейтинг статьи: 5
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
Комментарии 0