Siege

Website / GitHub

Siege присутствует в репозиториях всех популярных дистрибутивов, так что вы должны без труда установить её в своей системе.

В ubuntu установить Siege можно командой:

sudo apt-get install siege

Siege имеет 3 основных модели работы:

  1. Режим регрессионного тестирования (Regression);
  2. Режим имитации Интернета (Internet simulation);
  3. Режим грубой силы (Brute force);

Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди (режим регрессионного тестирования) или случайно (имитация интернета). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы.

Параметры запуска

Формат запуска Siege следующий: «siege опции». Программа может принимать следующие параметры:

  • -V : (Version) - Выводит на экран текущую версию.
  • -h : (Help) - Выводит справку.
  • -C : (Config) - Показывает текущую конфигурацию. Siege считывает настройки и выводит их содержимое. Вы можете их менять редактируя файл $HOME/.siegerc. Если такого файла у Вас нет, следует запустить утилиту siege.config, которая его сгенерирует.
  • -v : (Verbose) - Подробный вывод информации. Если эта опция включена Siege будет выводить на экран детальную информацию обо всех обращениях к серверу. Она включает в себя тип HTTP-протокола, код ответа и адрес обращения.
  • -g URL : (get URL) - Совершает обращение к указанной ссылке.
  • -c NUM : (Concurrent) - Количество имитируемых пользователей. Опция позволяет производить тестирование веб-сервера с количеством одновременных пользователей указанных в NUM. Фактически это число ограничивается лишь ресурсами компьютера, но в на практике для хорошего результата требуется имитировать всего пару сотен пользовательских сессий. Помните что при любой конфигурации Вы всё равно не сымитируйте поведение настоящих людей. Хотя бы потому, что они задерживаются на каждой странице, читая информацию, а не перебирают ссылки одну за другой.
  • -i : (Internet) - Эта опция используется с конфигурационным файлом содержащим множество ссылок. При её включении Siege случайно выбирает адреса обращений и производит к ним запросы. В реальности Вы не можете сказать пользователям на какие страницы и в какой последовательности они должны заходить. Они будут делать это всегда по разному. Режим имитации Интернета пытается эмулировать такое поведение. Обратите внимание на то, что в процессе тестирования к некоторым адресам из файла может не произойти обращений вообще, ведь они выбираются случайно.
  • -t NUMm : (Time) - Время, за которое должно пройти тестирование. Указывается в формате «NUMm», где NUM это количество единиц времени, а «m» это модификатор S, M, или H для секунд, минут и часов соответственно. Например, для того чтобы запустить тестирование на час, Вы можете воспользоваться следующими комбинациями: -t3600S, -t60M, -t1H. Модификатор не чувствителен к регистру, но между ним и числом не должно быть пробелов.
  • -f FILE : (File) - Конфигурационный файл содержащий ссылки (SIEGE_HOME/etc/urls.txt).
  • -l : (Log) - Эта опция указывает Siege что она должна записывать всю информацию в лог-файл SIEGE_HOME/var/siege.log.
  • –m MESSAGE : (Mark) - Эта опция позволяет указать выражение которым будут разделяться записи о разных тестированиях в лог-файле.
  • -d NUM : (Delay) - Эта опция указывает задержку между обращениями имитируемых пользователей к серверу. Время задержки вычисляется от единицы до введённого числа. При проведении тестирования на ресурсоёмких участках приложения желательно ставить задержку равную секунде (-d1). По умолчанию задержка происходит от 1 секунды до 3.

Если вам необходимо, чтобы siege «побродил» по вашему серверу вместо того, чтобы тупо долбиться на один и тот-же URL, создайте текстовый файл со списком URL, которые необходимо посетить в процессе тестирования и укажите путь к нему при помощи опции '-f':

siege -d 5 -c 200 -r 5 -f /path/to/urls.txt

Чтобы заставить утилиту брать URL из файла не последовательно, а случайно, добавьте опцию '-i':

siege -d 5 -c 200 -r 5 -i -f /path/to/urls.txt

Конфигурационный файл называется .seigerc и располагается в домашней директории пользователя, установившего Siege. Если этого файла там нет (например устанавливали программу не Вы), то можно воспользоваться утилитой siege.config для его создания. Внутри файла находятся различные директивы с комментариями к ним. Редактирование Вы можете проводить с использованием любого текстового редактора.

Siege понимает следующий формат ссылок:

[протокол://] [сервер.домен.xxx] [: порт] [/диерктория/файл]

Поддерживаются адреса только с протоколами HTTP и HTTPS.

Siege поддерживает объявление переменных в файле .siegerc и в файлах со ссылками (urls.txt). Синтаксис объявления переменных Siege похож на синтаксис UNIX shell. Они объявляются по одной на строку в формате “varname=value”. Название переменной помещается внутрь конструкции $() или ${}. Вы можете использовать их, например, для быстрого переключения между двумя протоколами проверяемых ссылок:

PROT=https://
$(PROT)eos.joedog.org/siege/index.php
$(PROT)eos.joedog.org/wacky/index.php
$(PROT)eos.joedog.org/scout/index.php
$(PROT)eos.joedog.org/libping/index.php
$(PROT)eos.joedog.org/gunner/index.php

В этом примере, для того чтоб сменить протокол всех ссылок, Вам необходимо изменить всего лишь одну строку.

Log File

Когда Siege запускается с включенной опцией логирования [-l/--log], программа заносит всю выводимую информацию в PREFIX/var/siege.log, где PREFIX – установочная директория Siege (смотрите файл INSTALL). В лог-файл пишется всё что выводится программой на экран в стандартном режиме.

Примеры

  • Запустим Siege с параметрами по умолчанию: одновременно 15 пользователей, обращающихся к сайту, пока вы не остановите тест нажав Ctrl + c:
    siege http://example.com
  • 100 пользователей, которые безостановочно загружают главную страницу в течении одной минуты:
    siege -c 100 -b -t 1m http://example.com
  • Выполним 1000 последовательных запросов:
    siege -b -c 1 -r 1000 http://example.com
    Здесь:

    Опция '-b' переключает утилиту в режим тестирования производительности, т. е. siege не будет делать паузу случайной длительности между запросами;
    Опция '-c' определяет количество параллельных запросов, отправляемых за один раз. В нашем случае — один;
    При помощи опции '-r' определяется количество повторов запроса.

    После выполнения тестирования утилита выведет результаты:

    Transactions: 1000 hits - общее количество транзакций составило 1000;
    Availability: 100.00 % - «доступность» (т. е. процент успешных сокет-подключений ) сервера составила 100%;
    Elapsed time: 10.97 secs - тест занял 10,97 секунд;
    Data transferred: 8.95 MB - было передано 8,95 мегабайт данных;
    Response time: 0.01 secs - среднее время, потребовавшееся серверу для ответа составил 0,01 секунды;
    Transaction rate: 91.16 trans/sec - в среднем за одну секунду удалось выполнять 91,16 транзакций;
    Throughput: 0.82 MB/sec - средняя скорость обмена данными с сервером составила 0,82 мегабайта в секунду;
    Concurrency: 1.00 - параллельно сервер обрабатывал один запрос;
    Successful transactions: 1000 - было успешно (HTTP-код ответа сервера <400) обработано 1000 транзакций;
    Failed transactions: 0 - не удалось обработать (HTTP-код ответа сервера >=400) обработано 0 транзакций;
    Longest transaction: 0.03 - длительность самой длинной по времени транзакции составила 0,03 секунды;
    Shortest transaction: 0.00 - длительность самой короткой по времени транзакции составила 0,00 секунд.