Siege — утилита для нагрузочного тестирования веб-серверов
Siege – это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы. Сервис для теста ssl poodle на нашем сайте.
UPD: спасибо за плюсы, перенес в тематический блог.
Параметры запуска
Формат запуска Siege следующий: «siege опции». Программа может принимать следующие параметры:
' -V '
' –version'
Выводит на экран текущую версию.
' -h '
' –help'
Выводит справку.
' -C '
' –config'
Показывает текущую конфигурацию. Siege считывает настройки и выводит их содержимое. Вы можете их менять редактируя файл $HOME/.siegerc. Если такого файла у Вас нет, следует запустить утилиту siege.config, которая его сгенерирует
' -v '
' –verbose '
Подробный вывод информации. Если эта опция включена Siege будет выводить на экран детальную информацию обо всех обращениях к серверу. Она включает в себя тип HTTP-протокола, код ответа и адрес обращения. Пример:
HTTP/1.1 200 OK: /cgi-bin/whoohoo.cgi?first=Homer&last=simpson
Эта опция особенно полезна в случае регрессионного тестирования или имитации Интернета, когда программа обращается в широкому кругу адресов.
' -g URL '
' –get URL'
Совершает обращение к указанной ссылке. Получает заголовки с сервера и выводит их на экран. Отличный инструмент для точечного тестирования.
' -c NUM '
' –concurrent=NUM '
Количество имитируемых пользователей. Опция позволяет производить тестирование веб-сервера с количеством одновременных пользователей указанных в NUM. Фактически это число ограничивается лишь ресурсами компьютера, но в на практике для хорошего результата требуется имитировать всего пару сотен пользовательских сессий. Помните что при любой конфигурации Вы всё равно не сымитируйте поведение настоящих людей. Хотя бы потому что они задерживаются на каждой странице, читая информацию, а не перебирают ссылки одну за другой.
' -i '
' –internet '
Эта опция используется с конфигурационным файлом содержащим множество ссылок. При её включении Siege случайно выбирает адреса обращений и производит к ним запросы. В реальности Вы не можете сказать пользователям на какие страницы и в какой последовательности они должны заходить. Они будут делать это всегда по разному. Режим имитации Интернета пытается эмулировать такое поведение. Обратите внимание на то что в процессе тестирования к некоторым адресам из файла может не произойти обращений вообще ведь они выбираются случайно.
' -t NUMm'
' –time=NUMm '
Время, за которое должно пройти тестирование. Указывается в формате «NUMm», где NUM это количество единиц времени, а «m» это модификатор S, M, или H для секунд, минут и часов соответственно. Например, для того чтоб запустить тестирование на час Вы можете воспользоваться следующими комбинациями: -t3600S, -t60M, -t1H. Модификатор не чувствителен к регистру, но между ним и числом не должно быть пробелов.
' -f FILE '
' –file=FILE '
Конфигурационный файл содержащий ссылки (SIEGE_HOME/etc/urls.txt). Вы можете использовать эту опцию для того чтоб указывать другой путь к нему. Например:
siege –file=serverb.txt
' – l '
' –log '
Эта опция указывает Siege что она должна записывать всю информацию в лог-файл SIEGE_HOME/var/siege.log. При каждом новом тестировании файл будет дописан.
' – m MESSAGE '
' –mark=MESSAGE '
Эта опция позволяет указать выражение которым будут разделяться записи о разных тестированиях в лог-файле. Вместе с ней не обязательно использовать опцию -l, т.к. она будет включена автоматически. Если выражение в MESSAGE содержит пробелы не забудьте поместить его в кавычки.
' -d NUM '
' –delay=NUM '
Эта опция указывает задержку между обращениями имитируемых пользователей к серверу. Время задержки вычисляется от единицы до введённого числа. При проведении тестирования на ресурсоёмких участках приложения желательно ставить задержку равную секунде ( -d1 ). По умолчанию задержка происходит от 1 секунды до 3. Эта опция позволяет как бы накрывать сервер волнами запросов.
Конфигурационный файл
Начиная с версии 2.00 Siege поддерживает конфигурационные файлы в которых Вы можете хранить часто-используемые команды. Это может помочь при большом количестве тестирований с почти одними и теми же настройками. Данный файл называется .seigerc и располагается в домашней директории пользователя установившего Siege. Если этого файла там нет (например устанавливали программу не Вы) то можно воспользоваться утилитой siege.config для его создания. Внутри файла находятся различные директивы с комментариями к ним. Редактирование Вы можете проводить с использованием любого текстового редактора.
Формат передаваемых URL
Siege понимает следующий формат ссылок:
[протокол://] [сервер.домен.xxx] [: порт] [/диерктория/файл]
Поддерживаются адреса только с протоколами HTTP и HTTPS. Минимум что Вы должны указать – имя сервера. Если Вы находитесь внутри какого-то домена и тестируете сервер с именем shemp, и он прописан в Вашем файле хостов или на местном DNS, тогда команда
"siege -u shemp” произведёт обращение к адресу shemp.домен.net/index.shtml. Если Вы хотите чтоб Siege работал с https-сервером то нужно указать дополнительно ещё и протокол. Таким образом команда "siege -u shemp” заставит программу обращаться по адресу shemp.yourdomain.net/index.shtml.