Мне несколько раз приходилось загружать тестовые HTTP-серверы / веб-приложения, и каждый раз я был разочарован качеством инструментов, которые мне удалось найти.
Итак, какие инструменты вы используете при нагрузочном тестировании HTTP-сервера? И что я, скорее всего, сделаю неправильно, когда мне придется это сделать в следующий раз?
JMeter это бесплатно.
Mercury Interactive Load Runner очень красиво и очень дорого.
Я чувствую себя необычно квалифицированным, чтобы ответить на этот вопрос, поскольку моей нынешней компании необходимо моделировать 25000 одновременных подключений к нашим веб-серверам (мы обслуживаем онлайн-рекламу).
Для нагрузочного тестирования с очень большим объемом, Httperf это путь. Это бесплатно и, по нашему опыту, может имитировать большее количество одновременных подключений, чем JMeter или STA на одном и том же оборудовании.
На всякий случай, если вам интересно, мы имитируем 3500 запросов в секунду на маломощном, недорогом, сверхмалом форм-факторе Optiplex 330. Эти маленькие коробки стоят всего 280 долларов, и у нас есть много их, подключенных для работы. Httperf по запросу. Для сравнения, JMeter может выдавать на этом оборудовании только 800-900 запросов в секунду.
Если вы хотите загружать только один URL-адрес за раз на веб-сервере, загрузите Apache AB. Он поставляется с HTTP-сервером Apache.
Простая команда
ab -n 10000 -c 10 http://serverfault.com/questions/2107/tools-for-load-testing-http-servers
будет запускать 10000 запросов с одновременной работой 10 пользователей.
Если вы хотите записывать сеансы просмотра, проголосуйте за и примите ответ jmeter. Jmeter великолепен, и его можно масштабировать на многие тестовые машины, которые могут создавать огромные нагрузки.
Там есть Цунг, инструмент на основе Erlang.
Также есть действительно длинный список инструментов на http://www.softwareqatest.com/qatweb1.html#LOAD
Для быстрого теста вы можете использовать последовательности завитков и наборы URL-адресов. Скажем, например, мы собираемся запустить нагрузочный стресс-тест для Google, который мы можем запустить ...
curl -s "http://google.com?[1-1000]"
Это сделает 1000 звонков в Google, т.е.
http://google.com?1
http://google.com?2
http://google.com?3
...
http://google.com?1000
Более подробно это обсуждается на Как быстро провести стресс-тест веб-сервера с помощью curl.
Вам нужно будет настроить разные тесты:
После / перед каждым тестом вы должны вернуть платформу в прежнее состояние: восстановить базу данных, перезагрузиться для очистки памяти и кеша.
Вы также проведете разминку: запустите сценарии один раз перед настоящим тестом, чтобы веб-страницы были скомпилированы, соединение с базой данных выполнено. В противном случае первый вызов всегда будет плохо влиять на вашу статистику.
Вы можете добавить сложности, например:
И последнее важное обстоятельство: вы ДОЛЖНЫ сохранить все завершенные сценарии, чтобы иметь возможность повторить их точно так же, чтобы вы могли сравнить производительность с предыдущими тестами.
Если вы просто хотите проверить, как он обрабатывает несколько подключений, вы можете использовать что-то вроде Осада. Все еще не уверен, что это отличная мера, но она, по крайней мере, расскажет вам, как вы обрабатываете несколько подключений.
Я использовал openSTA.
Здесь используется относительно простой скриптовый язык.
Вы можете легко протестировать веб-службы / серверы и написать свои собственные сценарии.
Он позволяет вам объединять сценарии в тесте любым способом и настраивать количество итераций, количество пользователей на каждой итерации, время нарастания для представления каждого нового пользователя и задержку между каждой итерацией. Тесты также можно запланировать на будущее.
Это открытый исходный код и бесплатный.
Он создает ряд отчетов, которые можно сохранить в электронной таблице. Затем мы используем сводную таблицу, чтобы легко анализировать и отображать результаты.
Раньше я использовал LoadRunner, но это довольно дорого, я также использовал инструменты Microsoft Team Tester edition, которые включают систему для проведения нагрузочных тестов. Я был довольно доволен тем, как работает этот инструмент, и вы могли расширить тесты, используя .net, который был более легким синтаксисом, чем LoadRunner.
Версия load runner, которую мы использовали, также не могла обрабатывать наш сайт AJAX (это было еще в 2000 году, поэтому я уверен, что инструмент к настоящему времени улучшен)
Мы используем WAPT, и это работает очень хорошо. Легко настроить, всего несколько сотен долларов. Стоимость LoadRUnner смехотворно завышена и недоступна для всех, кроме Forutune 500.
Это зависит от того, насколько сложен ваш сценарий.
Чтобы правильно смоделировать реальную пользовательскую нагрузку на ваш сервер, вы должны попытаться смоделировать то, что пользователи на самом деле делают. Если ваши пользователи просто попадают на сервер с URL-адресом, подойдет любой из бесплатных / простых инструментов.
Для более сложных веб-сайтов вы можете использовать инструмент, который поможет вам с динамической корреляцией значений, параметризацией и т. Д. Вы можете использовать Load-Runner и т.п., я предпочитаю использовать WebLOAD.