Особенности нагрузочных тестов

В этом разделе содержатся советы, касающиеся крупных нагрузочных тестов в Visual Studio Ultimate. Рассматриваются следующие вопросы:

Выбор подходящего шаблона нагрузки

Выбор подходящей модели подключения

Частоты выборки и сбор данных

Время обработки

Установка целевого значения времени отклика для запросов веб-тестов производительности

Добавление временных сведений для сбора данных процентилей

Установка процентного значения свойства "Новые пользователи"

Включение профилировщика ASP.NET

Включение ведения журнала виртуальных пользователей

Включение трассировки SQL

Поддержка нужного числа компьютеров-агентов

Выбор подходящего шаблона нагрузки

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

Постоянная нагрузка

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

Пошаговая нагрузка

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

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

С учетом эталона

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

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

Выбор подходящей модели подключения веб-тестов производительности

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

Подключения на пользователей

Модель подключений на пользователей наиболее реалистично имитирует поведение пользователя, пользующегося реальным обозревателем. Каждый виртуальный пользователь, выполняющий веб-тест производительности, использует до шести подключений к каждому веб-серверу. Подключения остаются открытыми для веб-сервера, выделенного для этого виртуального пользователя. Первое подключение устанавливается при отправке первого запроса веб-теста производительности. Дополнительные подключения можно использовать, если страница содержит несколько зависимых запросов. С помощью дополнительных подключений эти запросы можно отправлять параллельно. В более старых браузерах используется не более двух подключений на веб-сервер, но FireFox 3 и Internet Explorer 8 используют до 6 подключений на веб-сервер. Одни и те же подключения используются многократно на протяжении выполнения нагрузочного теста одним виртуальным пользователем.

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

Пул подключений

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

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

Подключение на итерацию теста

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

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

Частоты выборки и сбор данных

Выберите частоту выборки в соответствии с длительностью нагрузочного теста. При небольшом значении частоты выборки (например, 5 секунд) будет собрано больше данных, чем при большом значении. Сбор большого объема данных в течение длительного времени может привести к тому, что не останется места на диске. Для длительных нагрузочных тестов можно использовать более высокое значение частоты выборки, чтобы снизить объем собираемых данных. Также на объем собираемых данных влияет число счетчиков производительности. Для тестируемых компьютеров снижение числа счетчиков приведет с уменьшению объема собираемых данных.

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

Длительность нагрузочного теста

Рекомендуемая частота выборки

< 1 часа

5 секунд

1–8 часов

15 секунд

8–24 часа

30 секунд

24 часа

60 секунд

Время обработки

Время обработки запросов веб-тестов производительности в значительной степени влияет на число пользователей, запросы которых можно обработать за достаточно краткое время. Изменение времени обработки с 2 секунд на 10 секунд позволит смоделировать в 5 раз больше пользователей. Однако если нужно смоделировать реальную работу пользователей, следует рассчитать, сколько времени пользователи будут тратить на просмотр веб-узла. Повышение времени обработки и числа пользователей не обязательно приведет к повышению нагрузки на веб-сервер. Однако если на веб-узле используется проверка подлинности, то это сильно повлияет на производительность.

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

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

Установка целевого значения времени отклика для запросов веб-тестов производительности

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

Кроме того, при использовании правила проверки "Цель времени ответа" страницы, не соответствующие целевому показателю времени обработки запроса, вызовут ошибку нагрузочного теста. Если использовать ошибку входа, можно будет видеть, что делал виртуальный пользователь, когда возникла ошибка медленной загрузки страницы.

Дополнительные сведения см. в разделе Практическое руководство. Задание целевых значений времени ответа страницы в веб-тесте производительности.

Добавление сведений о времени для сбора данных процентилей и включения представления сведений

Среди параметров запуска есть свойство Хранилище сведений о времени. Если это свойство включено, то в хранилище результатов нагрузочного теста будет записываться время выполнения каждого отдельного теста, транзакции и страницы. Это позволяет строить диаграмму активности виртуальных пользователей в анализаторе тестовой нагрузки. Кроме того, это позволяет показывать процентили 90, 95 и 99 и стандартные отклонения в таблицах Тесты, Транзакции и Страницы анализатора тестовой нагрузки.

По умолчанию свойство Хранилище сведений о времени включено для поддержки диаграммы активности виртуальных пользователей в представлении сведений при просмотре результатов нагрузочного теста в анализаторе тестовой нагрузки.

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

  • Объем места для хранения сведений о времени может быть очень большим, особенно для длительных тестов.

  • Сохранение этих сведений в хранилище результатов нагрузочных тестов после окончания теста может занять много времени, поскольку эти данные хранятся на агентах до завершения тестирования.

Если в хранилище результатов достаточно места, можно включить свойство Хранилище сведений о времени для получения данных процентилей. При включении свойства Хранилище сведений о времени есть два варианта: Только статистика и Все индивидуальные сведения. В обоих случаях измеряется время всех тестов, страниц и транзакций, а на основе сведений о времени вычисляются данные процентилей. Если выбрать Только статистика, то после вычисления данных процентилей из хранилища будут удалены сведения о времени для всех индивидуальных объектов. Это позволит уменьшить место, необходимое для хранения данных. Однако для непосредственной обработки сведений о времени с помощью средств SQL или для включения возможности просмотра сведений о виртуальных пользователях на диаграмме активности виртуальных пользователей нужно выбрать Все индивидуальные сведения для сохранения этих сведений в хранилище.

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

Установка процентного значения свойства "Новые пользователи"

В каждом сценарии нагрузочного теста есть свойство Доля новых пользователей. Это свойство влияет на то, как обработчик нагрузочных тестов моделирует кэширование браузеров. Значение по умолчанию для свойства Доля новых пользователей — 0. Это означает, что каждый виртуальный пользователь хранит кэш зависимых запросов и список cookie-файлов между итерациями теста. Кэш работает подобно кэшу браузера, т. е. последующие запросы к этому URL-адресу не повторяются, что наиболее точно моделирует работу реальных веб-браузеров.

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

Примечание

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

Чтобы создать наибольшую нагрузку на уровень приложений веб-сайта, используйте значение по умолчанию доли новых пользователей — 0 процентов. Это не только более точно моделирует поведение реальных пользователей, но и создает максимальную нагрузку на уровень приложений, с которым обычно связано наибольшее число проблем производительности. Дополнительные сведения см. в разделе Практическое руководство. Задание процента виртуальных пользователей, которые могут использовать данные веб-кэша.

Включение профилировщика ASP.NET

Новой функцией Microsoft Visual Studio 2010 является адаптер диагностических данных профилировщика ASP.NET, который позволяет собирать данные профилировщика ASP.NET на уровне приложения во время выполнения нагрузочного теста. Профилировщик нельзя использовать для продолжительных нагрузочных тестов (например, для нагрузочных тестов, которые выполняются больше часа), поскольку размер файла профилировщика может стать слишком большим (сотни мегабайт). Вместо этого с профилировщиком ASP.NET следует запускать более короткие нагрузочные тесты; при этом можно по-прежнему пользоваться преимуществами более глубокой диагностики проблем производительности.

Дополнительные сведения см. в разделе Практическое руководство. Настройка профилировщика ASP.NET для нагрузочного тестирования с помощью параметров тестирования.

Включение ведения журнала виртуальных пользователей

Новая функция Microsoft Visual Studio 2010 позволяет вести полные журналы непройденных тестов или задать частоту, с которой результаты тестирования будут заноситься в журналы. Ведение журнала настраивается с помощью свойств Сохранить журнал об ошибках тестирования, Частота сохранения журналов для выполненных тестов и Максимум журналов тестирования. Число сохраняемых журналов определяется свойствами Максимум журналов тестирования и Частота сохранения журналов для выполненных тестов. Значения по умолчанию не допускают сбора большого числа журналов. Для длительных по времени тестов, создающих миллионы запросов, не следует использовать параметр Частота сохранения журналов для выполненных тестов, иначе число журналов станет слишком большим. Кроме того, не следует указывать для свойства Максимум журналов тестирования слишком большое значение (фактически оно определяет максимальное число журналов для каждого типа ошибок). Необходимо задавать эти параметры таким образом, чтобы не собирать десятки тысяч журналов, поскольку это увеличит время сборки журналов после завершения тестирования, а журналы будут занимать очень много место в базе данных нагрузочного тестирования.

Дополнительные сведения см. в разделе Изменение параметров ведения журнала нагрузочного теста.

Включение трассировки SQL

Среди параметров запуска есть свойство Трассировка SQL включена. Это свойство позволяет использовать функцию трассировки Microsoft SQL Server во время теста. Этот подход можно использовать вместо запуска отдельного сеанса SQL Profiler во время нагрузочного теста для диагностики проблем производительности SQL. Если это свойство включено, данные трассировки SQL отображаются в анализаторе тестовой нагрузки. Их можно посмотреть на странице Таблицы в таблице Трассировка SQL.

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

Дополнительные сведения см. в разделах Настройка параметров запуска нагрузочных тестов и Практическое руководство. Интеграция данных трассировки SQL с помощью редактора тестовой нагрузки.

Поддержка нужного числа компьютеров-агентов

Если центральный процессор компьютера-агента использован более чем на 75% или доступно менее 10% физической памяти, этот компьютер перегружен. Добавьте в контроллер тестирования больше агентов, чтобы обеспечить достаточно ресурсов для нагрузочного теста.

Дополнительные сведения см. в разделах Распределение нагрузочных тестов между несколькими тестовыми компьютерами с помощью контроллеров и агентов тестирования и Практическое руководство. Задание агентов тестирования для использования в сценариях тестовой нагрузки.

См. также

Задачи

Устранение неполадок нагрузочных тестов

Основные понятия

Анализ ошибок в нагрузочных тестах с помощью таблицы ошибок

Анализ нарушений правила пороговых значений в нагрузочном тесте с помощью анализатора тестовой нагрузки

Другие ресурсы

Создание и изменение нагрузочных тестов

Consideration for Load Tests that Contain Web Performance Tests