Лучший способ стресс-теста на сайте
Возможно, это неправильный вопрос, но как лучше всего реплицировать большую нагрузку на веб-приложение asp.net? Есть ли простой способ моделирования многих запросов на определенных страницах? Или лучше всего использовать профилировщик для отслеживания одного запроса, а затем работать с ним, если производительность в порядке?
Было бы хорошо знать, насколько хорошо веб-приложение работает с спецификацией сервера. Я хотел бы иметь возможность имитировать интенсивный трафик на моем тестовом сервере, чтобы я мог работать, если производственный сервер достаточно хорош (в частности, с iis/asp.net, а не с db-производительностью).
Ответы
Ответ 1
Мое предложение - сначала выполнить некоторые автоматизированные тесты. Используйте selenium для этого.
Затем развернуть селеновую сетку для тестирования на нескольких компьютерах одновременно.
Хотя Selenium в качестве автоматизированного тестового инструмента будет работать довольно быстро, сделав мини-стресс-тест. Если вы одновременно включите автоматическую работу на нескольких компьютерах в своей сети, вы сможете увидеть, как она себя ведет.
Если вы хотите записать тайминги ответов, у них есть классный api, который вы можете использовать для написания некоторых сценариев для запуска ваших автоматических систем.
Изменить: Selenium довольно прост в использовании, и он утверждает содержимое страницы, если вы хотите протестировать содержимое. Он также копирует ваше перемещение по странице, если вы пожелаете (это было бы моим предложением) просто перейдите на страницу много, а затем сохраните ее для автоматизации. Избегайте размещения утверждений, чтобы селен мог работать быстрее.
Ответ 2
Попробуйте http://loadimpact.com лучшее, что я нашел до сих пор, но альтернативы мне не найти.
Ответ 3
JMeter будет одним из таких инструментов. Может быть немного трудно узнать и настроить, но обычно это стоит того.
Ответ 4
Инструмент ab (apache bench) позволяет отправлять много запросов на одну страницу и указывать, сколько клиентов вы хотите использовать и сколько одновременного соединения вы хотите.
Это может быть первый шаг при разработке сайта. Просто проверьте некоторые страницы с определенной нагрузкой. Этот способ бенчмаркинга может иметь некоторые проблемы, такие как кеширование, используемое ранее.
Позже вам может понадобиться инструмент, который имитирует конкретный трафик, а не одну страницу. Я еще не располагаю поддержкой для такого инструмента.
Ответ 5
Возможно, grinder поможет? Вы можете имитировать параллельный запрос по потокам и облегченным процессам или распространять тесты на нескольких машинах. Я использую его с большим успехом каждый раз.
Ответ 6
Мы попробовали несколько приложений, как пробные версии коммерческих продуктов, так и свободно доступные. В конечном счете, это пробная версия Team Test Load Agent, которую мы пробовали. Он определенно отлично работает и довольно прост в использовании. В конечном счете, он укрепил наш аргумент, чтобы перейти на Team Foundation Server и оснастить все части отдела соответствующими инструментами.
Очевидным недостатком, однако, является цена.
Ответ 7
Я использовал WebLOAD для такого рода проектов. Легко создавать скрипты, и он имеет встроенную поддержку для мониторинга статистики ASP.NET
Ответ 8
DUP: Стресс-тестирование ASP.Net
Ответ 9
Для тестирования веб-сервисов, отдыха мыла или WCF (включая WebHttpBinding) попробуйте SOA Cleaner. Может быть уменьшен с помощью: http://xyrow.com. Существует бесплатная версия, и она не требует установки. Он также может выполнять тесты нагрузки.
Ответ 10
Еще один инструмент, который мне нравится, это Open STA: http://opensta.org/
Он в основном ориентирован на тестирование производительности и является бесплатным.
ОБНОВЛЕНИЕ 2018:
Поскольку ответ довольно старый, проект OpenSTA кажется не очень активным (однако инструмент все еще доступен), но теперь есть два других инструмента, которые я бы также рекомендовал:
На мой взгляд, Gatling кажется лучше, поскольку нет никаких ограничений, и они также предоставляют коммерческое решение Enterprise и оснащены такими инструментами непрерывной интеграции, как Jenkins.
NeoLoad, напротив, имеет бесплатную версию, но ограничена до 50 пользователей (этого может быть достаточно для некоторых случаев). Полное сравнение возможностей здесь.