Выполняете стресс-тест в веб-приложении? - PullRequest
237 голосов
/ 11 августа 2008

В прошлом я использовал Stress Tool для Microsoft Web Application и Pylot для стресс-тестирования веб-приложений. Я написал простую домашнюю страницу, сценарий входа и пошаговое руководство сайта (на сайте электронной коммерции добавление нескольких товаров в корзину и оформление заказа).

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

URL-адресами инструментов, которые я использовал, были Microsoft Homer (он же Инструмент веб-приложений для Microsoft ) и Pylot .

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

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

Ответы [ 30 ]

6 голосов
/ 06 января 2012

Это старый вопрос, но я думаю, что более новые решения заслуживают упоминания. Оформить заказ LoadImpact: http://www.loadimpact.com.

4 голосов
/ 30 сентября 2008

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

3 голосов
/ 03 сентября 2010

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

3 голосов
/ 01 ноября 2013

Blaze meter имеет расширение Chrome для записи сессий и их экспорта в JMeter (в настоящее время требуется вход в систему). У вас также есть возможность заплатить им деньги за запуск их на их кластере серверов JMeter (их цена кажется намного лучше, чем у LoadImpact, который я только что перестал использовать):

У меня нет с ними никакой связи, мне просто нравится внешний вид их сервиса, хотя я еще не использовал платную версию.

2 голосов
/ 22 июня 2009

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

1 голос
/ 01 октября 2016

Попробуйте ZebraTester , который намного проще в использовании, чем jMeter. Я использовал jMeter в течение долгого времени, но общее время установки для нагрузочного теста всегда было проблемой. Хотя ZebraTester не является открытым исходным кодом, время, которое я сэкономил за последние шесть месяцев, компенсирует это. У них также есть портал SaaS, который можно использовать для быстрого запуска тестов с использованием их генераторов нагрузки.

1 голос
/ 28 августа 2008

Я нашел IBM Page Detailer также интересный инструмент для работы.

1 голос
/ 16 сентября 2008

Я использовал openSTA .

Это позволяет записывать сеанс с веб-сайтом, а затем воспроизводить его на относительно простом языке сценариев.

Вы можете легко тестировать веб-сервисы и писать собственные сценарии.

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

Это с открытым исходным кодом и бесплатно.

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

1 голос
/ 15 июля 2012

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

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

Для проектов, которые не предъявляют экстремальных требований к производительности, мы включаем базовое тестирование производительности в наше тестирование; обычно мы пишем тесты с помощью BadBoy и импортируем их в JMeter, заменяя данные для входа и другие специфичные для потока вещи. Затем мы увеличиваем их до уровня, когда сервер обрабатывает 100 запросов в секунду; если время отклика меньше 1 секунды, этого обычно достаточно. Мы запускаем и движемся дальше по жизни.

Для проектов с экстремальными требованиями к производительности мы по-прежнему используем BadBoy и JMeter, но прилагаем много сил для понимания узких мест на серверах нашего тестового стенда (обычно на веб-серверах и серверах баз данных). Есть хороший инструмент для анализа журналов событий Microsoft , который очень помогает в этом. Обычно мы находим неожиданные узкие места, которые мы оптимизируем, если это возможно; это дает нам приложение, которое работает так же быстро, как и на «1 веб-сервере, 1 сервере базы данных». Затем мы обычно развертываем в нашей целевой инфраструктуре и используем один из сервисов «Jmeter in the cloud» для повторного запуска тестов в масштабе.

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

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

1 голос
/ 18 августа 2012

Есть много хороших инструментов, упомянутых здесь. Интересно, являются ли инструменты ответом на вопрос: «Как вы проводите стресс-тестирование веб-приложения?» Инструменты на самом деле не обеспечивают способ подчеркнуть веб-приложение. Вот что я знаю:

Стресс-тестирование показывает, как происходит сбой веб-приложения при обслуживании ответов для растущего числа пользователей. Стресс-тестирование показывает, как работает веб-приложение, когда оно не работает. Большинство современных веб-приложений, особенно социальные и мобильные веб-приложения, представляют собой интеграцию сервисов. Например, когда в мае 2011 года произошел сбой Facebook, вы не могли войти в веб-приложение Pepsi.com. Приложение не полностью вышло из строя, просто большая часть его нормальной функции стала недоступной для пользователей.

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

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

Я описал методологию PushToTest в Руководстве пользователя TestMaker по адресу http://www.pushtotest.com/pushtotest-testmaker-6-methodology. TestMaker поставляется в двух вариантах: версия с открытым исходным кодом (GPL) для сообщества и TestMaker Enterprise (коммерческая, с отличной профессиональной поддержкой).

-Frank

...