Как стать автором
Обновить

Комментарии 67

Реально полезная вещь! Давно искал что-то подобное. Спасибо!
рад, что помог!
Есть ещё Tsung
Благодарю. Тоже посмотрю. А то уже сам собирался писать что-то такое на php, чтобы движок свой на нагрузку протестировать хоть как-то.
а для апача еще есть стандартный ab
Посмотрите ещё на Jmeter, может тоже полезно будет.
А можно ли симитировать движение пользователя по сайту, использующему сессии?
Т.е. первый запрос — это запрос авторизации, а дальше запрашиваются какие-то страницы.
При этом «пользователи» разные.
к сожалению, на данный момент нет. по крайней мере на сайте автора нет упоминаний про авторизацию.
на главной странице сайта в первом абзаце:
Siege supports basic authentication, cookies, HTTP and HTTPS protocols.
:)
прошу прощения — не доглядел=) сам только начинаю разбираться.
Может быть, Вы, когда разберетесь, выложите несколько полностью расписанных сценариев использования?
обязательно выложу!
Буду ждать:)
Удачи!
Что ж, спасибо:)
Значит, можно брать на заметку.
Я бы не назвал поддержку cookies полноценной, ведь нельзя установить куку для имитации зарегистрированного юзера.
Беру свои слова назад. Куки прекрасно передаются с помощью -H:

$ siege -H «Cookie: name=val; name2=val2; ...»
В Selenium есть реализация сценариев.
Selenium — система для автоматического функционального тестирования. Для стресс-тестирования вряд ли подойдет
Есть возможность записать сценарий в Selenium, а потом экспортировать его в jmeter.
Советую попробовать Apache Jmeter — и для начинающих очень удобен (есть gui для разработки тест-планов) и для серьезных тест-задач тоже очень хорош. Поддерживает распределенное тестирование, http сессии и аутентификацию, сложные сценарии, графические отчеты, сохранение результатов, пре/пост-процессоры контента и еще кучу других полезных фич.
Единственный серьезный минус — жрет много памяти (по сравнению с тем же siege).
здесь краткий туториал на русском.
Пока из бесплатного лучше Apache JMeter ничего не видел. Нужно посмотреть этого зверя поближе
JMeter не умеет генерировать большие нагрузки (>5 KRPS) с одного хоста.
А во что он «упирается»? В смысле почему не умеет? Искусственное ограничение, или тредов в операционке не хватает?
В Яву он упирается. И в архитектуру свою. За гибкость надо платить.
А если на машинке 8 процессоров и 16 гигов памяти? Сможет преодолеть это ограничение? Если что, я могу проверить ;)
Для StateFull тестов наврядли. Но попробуйте. Эффективнее кластеризовать.
Jmeter вообще странный — то запущенный тест не останавливается иначе как по kill -9, то результаты первого и второго прогонов отличаются в 2 раза, то собраная статистика не стирается иначе как перезапуском. И BeanShell — вообще чудо какая штука.

Вобщем, ура ещё одному бенчмарку вебсерверов, и большое спасибо за использование Си =)
Да. Отличная штука, очень удобна в использовании.
а есть инструменты для записи сценариев? или тесты нужно писать вручную?
OpenSTA позволяет записывать сессии и потом их воспроизводить, еще вроде WAPT такое позволяет и еще несколько тулзеней названия которых сейчас уже и не вспомнить (последний раз пользовался этим добром лет 5 назад, а то и больше).

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

JMeter умеет работать в качестве прокси и на основе запросов записывать план тестирования.
Ну siege — тоже «уже существующий инструмент», и совсем даже не новый) Как мне показалось — эдакая замена для ab, только понавороченней.
А мне интересно — программа обращается к указанным адресам, загружая только саму HTML-страницу (или файл, ясное дело) или производит анализ и загружает ещё и всё, что есть на этой странице (картинки, скрипты, внешние CSS и т.п.)?

По-моему не слишком получается объективное тестирование, если программа долбится и скачивает только сами HTML-файлы, ведь любой высоконагруженный проект разделяет нагрузку между серверами (вроде Apache + nginx + кэш сверху), и хотелось бы оценивать всю систему в целом. Кто-нибудь знает что-нибудь подобное? :)
можно дописать подгрузку стилей и т.п.:)
по-хорошему должно быть несложно
Посмотрите на Jmeter, там есть опции загрузки медиа (можно включить, можно выключить).
Спасибо, посмотрим :)
Именно с помощью этой утилиты два уже «тестируют» мои серверы какие то школьники. Так что использовать можно и для не совсем благих намерений.
Переносной «хабраэффект»? Спасибо, проверюсь!
"..Preparing 25 concurrent users for battle."
Из серии «Программисты шутят» :)
^___^
ApacheBench + Перловый модуль HTTPD::Bench::ApacheBench?
Ачат жив… у кузи всегда интересные материалы
только вот последнее время в дауне очень часто=( а так ресурс хороший, давно на нем.
Чем он лучше ab?
А если нужно тестить IIS?
Да хоть webmin, без разницы. ab — это http-клиент, и ему без разницы, кто ему на запросы отвечать будет.
ab вроде бы просто тупой бенчмарк — натравили его куда-нибудь, и он запрашивает страницу с макс. возможной частотой. Поправьте, если нет, могу тут ошибаться, конечно, но на превый взгляд — так.

А siege умеет имитировать (в какой-то мере) действия пользователей. Например, N пользователей делают запросы (как GET, так и POST) к разным страницам, причем каждый пользователь — через случайный интервал времени (например, от 1 до 10с).
Мне не понятен сам смысл этой задумы. А что если в один прекрасный момент пользователи всей толпой ударят по одному узкому, тормозному месту, вместо ваших рандомных манипуляций с этой программе.
Я думаю разработчик тестируемого веб-проекта лучше этой программы знает, какие запросы будут самыми тяжёлыми. Так зачем включать в тест эту имитацию? Которая, кстати, только добавит воды в тест. И отожрёт процессорное время если тестирование будет происходить на той же машине…
1. Узкое место может быть не так, где ожидалось.
2. Возникнуть оно может из-за того что все долбятся не в одну страницу, а в разные. Одна страница может закешироваться, а пачка страниц может в кеш не влезть и вылезет проблема.
Согласен. Могут быть проблемы с какими-нибудь блокировками БД… Файлов… И прочего…
Хм… Полезный инструментарий 8)))
Был бы еще полезнее, если бы работал как спайдер. В конфиге задавались правила, куда можно ходить, а куда нельзя (например, за пределы домена) и спайдер бы сам по ссылкам ходит, которые он видел на странице, авторизировался в формах, используя пул паролей и логинов итд. Вот тогда, исключая места в которые можно попасть только через JS или постинга формы с, например, капчей, было бы более-менее приближенное к реальности тестирование.
Ведь на тех паре десятков url что будут внесены в конфиг, проблемы наверняка не возникнет, в кеш все влезет.
стоит однако заметиьт что siege относительно ab2 жутко (!) прожорливый. Например, если натравить на helloworld апача — то 90% cpu на той же машине сожрёт сам siege.

+ он у меня показал чудеса нестабильности, опять же относительно ab2.
Есть ли какие-нибудь преимущества, помимо компактности, у Siege по сравнению с микрософтовской
Web Application Stress (WAS) Tool (см. support.microsoft.com/kb/313559)?
думаю, что одно из них — кроссплатформенность
Удивительно хорошая утилитка. Наконец-то я проверил максимальную нагрузку на свою самопальную вики. Оказалось, что на 100 юзерах 18% запросов просто утеряется по таймауту… жуть. А всё из-за перла, на движке которого вики и сидит… Может питон лучше будет?
Пересмотреть алгоритмы будет лучше… Не исключено что узкое место в базе, например.
А всё из-за перла, на движке которого вики и сидит…

Жесть… Судя по всему — вы хоть на чистом СИ пишите, толку не будет.
Некоторые вунь на ПХП высоконагруженные сайты пишут. И ни чего.
Плохому танцору...(с)
Можно и на си написать — лишь бы за это заплатили =)
А если серьёзно, простая проверка нагрузки cpu top'ом показала, что при 10 пользователях страница генерируется перловым скриптом аж 2.5 секунды, при этом жрёт это радость 25-30% cpu, на 2х ядерном 2х процессорном сервере. Чего уж там скрывать — основа сайта twiki движок. Создаётся он как опен-сорс проэкт. И ожидать там всерх быстрой производительности я и не собирался. Самому писать двигло для сайта — тоже как-то… нету столько свободного времяни.
А про плохого танцора, уважаемый, вы себе сайт сами целиком писали?
Себе — нет.
Сапожник без сапог…
А вот заказчикам — да. Фрилансом, знаете ли, подрабатываю. Замечу — писал не домашние странички Васей Пупкиных…

что при 10 пользователях страница генерируется перловым скриптом аж 2.5 секунды, при этом жрёт это радость 25-30%
Поменяйте профессию.
Я био-физик… буду менять на кондитера, но не скоро.
В таком случае — снимаю шляпу.
НО. Пожалуйста. Не имея навыков — не гоните на язык программирования. Он здесь не при чём.
А ab отменили?
Надеюсь, что данный материал будет кому-нибудь полезен.
Не скромничайте!.. :)
На сколько я понял правильная ссылка www.joedog.org/siege-home/.
Так же можно установить в ubuntu через apt-get.
Спасибо за перевод мана :).
Отметьте, пожалуйста, особо, что в определении var=value пробелы вокруг '=' недопустимы, а то оригинальный ман вводит в заблуждение.
Спасибо за статью.
Вот тут
>>Concurrency – количество одновременных подключений при которых сервер отвечает без задержек.
не точный перевод
Concurrency is average number of simultaneous connections, a number which rises as server performance decreases.
примерно так:
Concurrency – среднее число одновременных подключений, которое увеличивается с падением производительности сервера.
Transactions: 147993 hits
Availability: 99.78 %
Elapsed time: 599.92 secs
Data transferred: 1870.78 MB
Response time: 0.98 secs
Transaction rate: 246.69 trans/sec
Throughput: 3.12 MB/sec
Concurrency: 240.89
Successful transactions: 81039
Failed transactions: 332
Longest transaction: 29.66
Shortest transaction: 0.01

Вот не пойму 81039+332 не равно 147993, где еще часть запросов?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации