CASINOJOY - Ставка На Успех! Проверь Свою Удачу!


Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - Под предельной нагрузкой: обзор программ нагрузочного тестирования веб-серверов
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Поиск ТОП Добавить публикацию

Под предельной нагрузкой: обзор программ нагрузочного тестирования веб-серверов

22.04.2008

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

Все идет по плану


Прежде чем бросаться в бой, вначале следует разобраться, что мы хотим получить в результате тестирования. Ведь проверка, как и любая другая работа, требует предварительной подготовки. При неправильно сформулированной задаче могут получиться результаты, которые будут не полностью отражать реальное положение дел. Исходя из предполагаемой нагрузки веб-сервера, необходимо определиться с критериями испытания. Установить, что будет считаться как успех, а что как неприемлемая работа сервиса (например, время ответа, загрузка сервера). Различают три варианта теста:

  • Нагрузочный (Load-testing) – определяется работоспособность системы при некоторой строго заданной заранее (планируемой, рабочей) нагрузке.
  • Устойчивости (Stress) – применяется для проверки параметров системы в анормальных и экстремальных условиях, основная задача во время этого теста - попытаться нарушить работу системы. Позволяет определить минимально необходимые величины системных ресурсов для работы приложения, оценить предельные возможности системы и факторы, ограничивающие эти возможности. Также определяется способность системы к сохранению целостности данных при возникновении внештатных аварийных ситуаций.
  • Производительности (Performance) – комплексная проверка, включающая предыдущие два теста, предназначена для оценки всех показателей системы.

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

Во время тестирования имитируется одновременная работа нескольких сотен или тысяч посетителей. Для большей правдивости каждый из виртуальных пользователей может «ходить» по сайту по индивидуальному сценарию и иметь личные параметры. Также в процессе тестирования можно имитировать кратковременные пики нагрузки, когда количество посетителей скачкообразно увеличивается, что очень актуально для сайтов с неравномерной аудиторией. Итак, чтобы полноценно провести тестирование, необходимо знать:
  • сколько посетителей планируется принимать в среднем, в пиковой нагрузке, время пиковой нагрузки;
  • могут ли несколько пользователей иметь один и тот же IP-адрес и/или логин/пароль;
  • среднее количество страниц, просматриваемых одним пользователем, есть ли различия в поведении между зарегистрированными и анонимными пользователями, количественное соотношение между такими пользователями, посещаемые страницы и время нахождения пользователя на узле;
  • наличие динамических страниц и страниц, изменяемых в течение определенного периода, и как часто это происходит;
  • задействуется ли электронная почта, например, для подтверждения полномочий пользователя;
  • какая еще дополнительная информация используется для проверки статуса пользователя (cookies);
  • требуется ли подтверждение полномочий пользователя сторонней организацией или удаленным сервером (например, номер кредитной карточки), и будет ли представлена информация для тестирования;
  • доступная пропускная способность канала, средняя его ширина для одного пользователя;
  • может ли работа нескольких пользователей вызывать коллизию;
  • используется ли защищенное HTTPS-соединение;
  • используется ли Java-апплеты, потоковое медиа, специальные плагины, что требуется с клиентской стороны для их поддержки;
используется ли кэширование страниц;
плановые технические мероприятия, которые могут повлиять на работу сервера, и время их проведения (синхронизация, архивирование и пр.).

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

Open Systems Testing Architecture


OpenSTA
(www.opensta.org) - больше чем приложение для тестов, это открытая архитектура, проектируемая вокруг открытых стандартов. Проект создан в 2001 году группой компаний CYRANO, которая поддерживала коммерческую версию продукта, но CYRANO распался, и сейчас OpenSTA распространяется как приложение с открытым кодом под лицензией GNU GPL, работает в Windows NT 4.0SP5/2000/XP. Для работы требует Microsoft Data Access Components (MDAC), который можно скачать сайта корпорации.

Текущий инструментарий позволяет провести нагрузочное испытание HTTP/HTTPS сервисов, хотя его архитектура способна на большее. OpenSTA позволяет создавать тестовые сценарии на специализированном языке SCL (Script Control Language). Для упрощения создания и редактирования сценариев используется специальный инструмент Script Modeler. Выбираем Tools – Canonicalize URL, запустится веб-браузер. Просто ходим по сайту, собирая ссылки, которые будут сохранены в скрипт. Все параметры запроса поддаются редактированию, возможна подстановка переменных. Структура теста и заголовки будут выводиться во вкладках в панели слева. Тесты удобно объединять в наборы. Настройки прокси задаются в самом скрипте, поэтому можно указать несколько серверов. Реализована возможность организации распределенного тестирования, что повышает реалистичность, или когда с одного компьютера не получается нагрузить мощный сервер. Каждая из машин такой системы может выполнять свою группу заданий, а repository host осуществляет сбор и хранение результатов. После установки на каждой тестирующей системе запускается сервер имен, работа которого обязательна. Поддерживается аутентификация пользователей на веб-ресурсе и установление соединений по протоколу SSL. Параметры работы нагружаемой системы можно контролировать с помощью SNMP и средств Windows NT. Результаты тестирования, включающие время откликов, количество переданных байт в секунду, коды ответа для каждого запроса и количество ошибок выводятся в виде таблиц и графиков. Использование большого числа фильтров позволяет отобрать необходимые результаты. Результат можно экспортировать в CSV-файл. Возможности по выводу отчетов несколько ограничены, но по ссылкам на сайте можно найти скрипты и плагины, упрощающие, в том числе, анализ полученной информации.

Apache JMeter

Apache JMeter (jakarta.apache.org/jmeter) является Java-приложением с открытым кодом, предназначен для нагрузочного тестирования не только веб-приложений и их отдельных компонентов (скрипты, сервлеты, Java объекты и др.), но также FTP-серверов, баз данных (с использованием JDBC) и сети. Функциональность расширяется с помощью плагинов. Поддерживается SSL (через Java Secure Sockets Extension). Возможно проведение тестов как с использованием графического интерфейса, так и из командной строки. Использование Java подразумевает кроссплатформенность, поэтому JMeter уверенно работает в различных *nix-системах, в Windows от 98 и некоторых других ОС. Распространяется под Apache License.

В JMeter предусмотрены механизмы авторизации виртуальных пользователей, поддерживаются пользовательские сеансы, шаблоны, кэширование и последующий offline анализ результатов теста, функции позволяют сформировать следующий запрос, основываясь на ответе сервера на предыдущий. Есть возможность проводить распределенные тесты. В этом случае один из компьютеров является сервером (bin/jmeter-server.bat), который управляет клиентами и собирает итоговую информацию.

Для работы достаточно запустить ApacheJMeter.jar или в консоли jmeter.bat (Windows) или jmeter.sh (*nix).

JMeter имеет встроенный прокси-сервер, который предназначен для записи сессий, но можно использовать и внешний. Перед началом тестирования необходимо составить тестовый план, описывающий серию заданий, которые необходимо выполнить JMeter. Он должен содержать одну или несколько групп потоков (Thread Groups) и другие элементы:
  • Логические контроллеры (Logic controllers);
  • Типовые контроллеры (Sample generating controllers);
  • Слушатели (Listeners);
  • Таймеры (Timers);
  • Соответствия (Assertions);
  • Конфигурационные элементы (Configuration elements).

Первым делом добавляем группу потоков (Edit - Add - Thread Group). В ее настройках указываем название, количество запускаемых потоков, то есть виртуальных пользователей (Number of threads), время задержки между запуском потоков (Ramp-Up Period), количество циклов выполнения задания (Loop Count), здесь же можно определить выполнение задания по расписанию (Sheduler). Далее, щелкая в созданную группу, необходимо добавить образец запроса (Sampler), выбрав его из списка. Для нагрузочного тестирования или проверки работоспособности сервера достаточно выбрать HTTP Request (Add -Sampler - HTTP Request). Здесь указываем название, IP-адрес и порт веб-сервера, протокол, метод передачи данных (GET, POST), параметры переадресации, передачу файлов на сервер. Настраиваем и жмем на Run. Вывод результата осуществляется с помощью Listeners, каждый по-своему выводит результат. Например, Aggregate Graph выводит суммарные результаты теста в виде таблицы и графика.

Бесплатные продукты, увы, закончились, теперь парочка коммерческих решений.

WAPT – Web Application Testing


WAPT (www.loadtestingtool.com) позволяет испытать устойчивость веб-сайта и других приложений, использующих веб-интерфейс, к реальным нагрузкам. Разрабатывается новосибирской компанией SoftLogica LLC. Это одна из самых простых в использовании программ обзора. Для проведения простого теста даже не нужно заглядывать в документацию, интерфейс прост, но не локализован. Работает под управлением Windows от 98, поддерживается и Vista. Для проверки WAPT может создавать множество виртуальных пользователей, каждый с индивидуальными параметрами. Поддерживается несколько видов аутентификации и куки. Сценарий позволяет изменять задержки между запросами и динамически генерировать некоторые испытательные параметры, максимально имитируя таким образом поведение реальных пользователей. В запрос могут быть подставлены различные варианты HTTP-заголовка, в настройках можно указать кодировку страниц. Параметры User-Agent, X-Forwarded-For, IP указываются в настройках сценария. Значения параметров запроса могут быть рассчитаны несколькими способами, в том числе, определены ответом сервера на предыдущий запрос, используя переменные и функции. Поддерживается работа по защищенному протоколу HTTPS (и все типы прокси-серверов). Созданные сценарии, сохраняемые в файле XML-формата, можно использовать повторно. Кроме стандартных Performance и Stress, в списке присутствуют несколько других тестов, позволяющих определить максимальное количество пользователей и тестировать сервер под нагрузкой в течение долгого периода.

Для проведения теста необходимо выбрать New – Scenario, в результате запустится мастер создания теста. На первом шаге указывается тип теста и далее в каждом окне заполняются параметры будущего теста. Здесь можно указать фиксированное количество виртуальных пользователей, либо ступенчатое увеличение с указанием минимального и максимального числа и временного интервала, выставить таймер проведения теста. На следующем шаге задается время между кликами (think time), скорость соединения, указывается диапазон IP-адресов, который будет использован виртуальными пользователями. Нажатие на IP Adress List позволит составить список таких адресов. Также выставляется HTTP-параметр User-Agent и включается эмуляция прокси. Если требуется, чтобы виртуальные пользователи имели индивидуальные настройки, на следующем шаге мастера для каждого из них необходимо создать свой профиль, нажав New или загрузив сохраненный. В следующем окне программы необходимо выставить параметры профилей.

После нажатия на кнопку Готово сценарий сохраняется. Теперь, чтобы указать на объект тестирования, создаем профиль New – Profile и заполняем все параметры на вкладках. Здесь же доступны для редактирования некоторые параметры, задаваемые раннее с помощью мастера. Также указывается загрузка рисунков виртуальным пользователем, параметры аутентификации, использование Cookies и другие.
На вкладке Recorder указываем адрес сайта, доступность которого можно тут же проверить, нажав Go. Одновременно последует запрос на запуск Recorder, который будет отслеживать посещенные страницы и записывать URI (они будут выводиться в панели слева). Когда вся информация собрана, нажимаем Run Test. Подробные отчеты в форме графика выводятся по ходу проведения теста, по окончании будет сформирована HTML-страница. В результате можно получить информацию о времени ответа сервера с возрастанием нагрузки, по количеству ошибок, переданных и принятых байт и т.д.

NeoLoad

NeoLoad (www.neotys.com) - еще одна система, позволяющая провести нагрузочное тестирование веб-приложений. Написана на Java, работает на компьютерах, работающих под управлением Windows NT/2000/XP, Linux и Solaris. В отчете можно получить подробную информацию по каждому загруженному файлу. NeoLoad весьма удобен для оценки работы отдельных компонентов (AJAX, PHP, ASP, CGI, Flash, апплетов и пр.). Возможна установка времени задержки между запросами (thinktime) глобально и индивидуально для каждой страницы. Тестирование проводится как с использованием весьма удобной графической оболочки, так и с помощью командной строки (используя заранее подготовленный XML-файл). Поддерживает работу с протоколом HTTPS, с HTTP и HTTPS прокси, basic веб-аутентификацию и cookies, автоматически определяя данные во время записи сценария, и затем проигрывает во время теста. Для работы с различными профилями для регистрации пользователей могут быть использованы переменные. При проведении теста можно задействовать дополнительные мониторы (SNMP, WebLogic, WebSphere, RSTAT и Windows, Linux, Solaris), позволяющие контролировать и параметры системы, на которой работает веб-сервер.

При помощи NeoLoad можно проводить и распределенные тесты. Один из компьютеров является контролером, на остальные устанавливаются генераторы нагрузки (loadGenerator). Контролер распределяет нагрузку между loadGenerator и собирает статистику.

Очень удобно реализована работа с виртуальными пользователями. Пользователи имеют индивидуальные настройки, затем они объединяются в Populations (должна быть создана как минимум одна Populations), в Populations можно задать общее поведение (например, 40% пользователей популяции посещают динамические ресурсы, 20% читают новости). Виртуальные пользователи могут иметь индивидуальный IP-адрес, полосу пропускания и свой сценарий теста.

Сценарий будущего теста создать очень просто. Запускаем приложение (при первом запуске потребуется ввести регистрационный ключ, 30-дневная версия после регистрации будет отправлена по почте), выбираем New Project, вводим название проекта. После этого будет показана небольшая подсказка по поводу дальнейших действий, нажатие Start Recording запустит веб-браузер, все перемещения будут записаны. По окончании нажимаем Stop Recording или закрываем браузер. Запускается мастер, который поможет создать виртуальных пользователей и произведет автоматический поиск динамических параметров в записанных страницах, выставит среднее значение thinktime. Компоненты страницы (HTML, images, CSS) сохраняются отдельно. Для получения результата требуется пройти три шага:
  • Design - настройка проекта, здесь три вкладки. В Repository указываются веб-страницы и параметры запросов, в Virtual User создаются виртуальные пользователи, указываются URL, которые они должны "посетить", и дополнительные условия из левой вкладки поля Actions. В Populations – задания каждой из групп пользователей. В Actions могут быть выбраны следующие действия: Delay (установка задержки), Loop (повтор запроса), While (цикл), If...Then...Else (условие), Container и Random Container (групповые действия), Try...Catch (обработка ошибок), Stop virtual user (останов работы виртуального пользователя).
  • Runtime – указываются параметры теста, проводится тест. Здесь же в отдельных вкладках по ходу проведения теста выводится статистика.
  • Results – отвечает за вывод различной статистики в виде таблиц и графиков.

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

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


Продукты от Microsoft

Корпорация Microsoft предлагает целых два продукта, позволяющих протестировать веб-сервер под нагрузкой. Это Microsoft Application Stress Tool и Web Capacity Analysis Tool. Первый распространяется как отдельный продукт и имеет графический интерфейс. Второй входит в состав комплекта инструментов Internet Information Services 6.0 Resource Kit Tools, работает из командной строки. MAST более наглядный, в создании теста поможет простой мастер создания тестов, возможна работа с cookies, регулировка нагрузки по разным URL. Сценарий тестирования может быть создан вручную или записан с помощью веб-браузера и при необходимости отредактирован. В WAST уровень нагрузки (stress level) регулируется путем задания количества нитей, осуществляющих запросы к серверу, а число виртуальных пользователей рассчитывается как произведение числа нитей на число сокетов, открытых каждой из нитей. По окончании теста получаем простой отчет в текстовой форме, в котором дана информация по числу обрабатываемых запросов в единицу времени, среднему времени задержки, скорости передачи данных на сервер и с сервера, количеству ошибок и т.д. Отчет можно экспортировать в CSV-файл. Никаких возможностей по статистической обработке не предусмотрено, то есть с его помощью можно только оценить работу при определенных условиях

При копировании материалов ссылка на HackZone.RU обязательна

Добавить страницу в закладки

 Детали
Категория: Прочее
Опубликовал: coyote
Просмотров: 13907
Проголосовало через SMS: 0
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

 Комментарии (оставить свой комментарий можно здесь)
Только зарегистрированные пользователи могут оставлять комментарии

Зарегистрироваться *** Авторизоваться


 Последние новости и статьи  Последние сообщения с форумов
  • WhatsApp уверяет пользователей, что Facebook не имеет доступа к и...
  • Однострочная команда в Windows 10 может повредить жесткий диск с ...
  • Кардерский форум Joker’s Stash объявил о закрытии
  • Релиз ядра Linux 5.9
  • Российские хакеры вооружились уязвимостью Zerologon
  • Тысячи приватных звонков американских заключенных оказались в отк...
  • Шифровальщик атаковал немецкую компанию Software AG
  • Злоумышленники используют службу Windows Error Reporting для бесф...
  • Microsoft предупредила о вымогателях, которые выдают себя за МВД ...
  • Инфостилер Valak ворует информацию из почтовых систем Microsoft E...

    Все новости... Все статьи... Прислать новость RSS
  • Разное / Предложения работы » Сервис Postman - 500 руб за получение писем и 10€ за пересыл...
  • Разное / Куплю, приму в дар » Покупка аккаунтов Uphold
  • Разное / Предложения работы » Re: Нужен Взлом сайта на DLE
  • Разное / Предложения работы » Re: Нужен Взлом сайта на DLE
  • Разное / Предложения работы » Re: Нужен Взлом сайта на DLE
  • Разное / Предложения работы » Re: Нужен Взлом сайта на DLE
  • Взлом и безопасность / Новичкам » Re: Помогите взломать gmail.com
  • Разное / Предложения работы » Re: Зайти на сайт из под Администратора + публикация статьи
  • Взлом и безопасность / WEB сайтов » Брутс для 2fa биржи
  • Разное / Предложения работы » Нужен Взлом сайта на DLE

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}