Следующая версия | Предыдущая версия |
utils:siege [2016/03/30 08:47] – создано mirocow | utils:siege [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1 |
---|
{{tag>utils server ab test}} | {{tag>utils server ab test networks networking network}} |
| |
====== Siege — утилита для нагрузочного тестирования веб-серверов ====== | ====== Siege — утилита для нагрузочного тестирования веб-серверов ====== |
Это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы. | Это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы. |
| |
| ===== Установка ===== |
| |
| <code> |
| $ apt-get install siege |
| </code> |
| |
| |
| ===== Пример ===== |
| |
| <code> |
| $ siege -b -c 100 -r 10 http://www.host.ru/ |
| </code> |
| |
| ransactions: 415 hits |
| Availability: 100.00 % |
| Elapsed time: 8.34 secs |
| Data transferred: 15.67 MB |
| Response time: 1.75 secs |
| Transaction rate: 49.76 trans/sec |
| Throughput: 1.88 MB/sec |
| Concurrency: 87.21 |
| Successful transactions: 415 |
| Failed transactions: 0 |
| Longest transaction: 7.13 |
| Shortest transaction: 0.62 |
| |
| * Transactions – количество обращений к серверу. В примере это число высчитывается из 100 пользователей [ -c100 ] запустивших по 10 обращений [ -r10 ], что в общей сумме составляет 1000. |
| * Elapsed time – общая продолжительность тестирования. Она высчитывается начиная с первого обращения к серверу и кончая получением ответа на последний запрос. В примере тест занял 8.34 секунд. |
| * Data transferred – суммарное количество данных переданное всеми имитируемыми пользователями. Оно включает в себя как тела запросов, так и их заголовки. |
| * Response time – среднее время за которое сервер успел ответить клиенту. |
| * Transaction rate – среднее число обращений которые сервер успел обработать за секунду. Оно получается путём деления общего числа запросов на затраченное время. |
| * Throughput – среднее число данных передаваемых ежесекундно от сервера к пользователям. |
| * Concurrency – количество одновременных подключений при которых сервер отвечает без задержек. |
| * Successful transactions – количество запросов на которые сервер ответил кодом меньше 400. |
===== Параметры ===== | ===== Параметры ===== |
| |
^ ^ ^ | ^ ^ ^ |
|-V, --version |VERSION, prints the version number.| | |-C, --config |Показывает текущую конфигурацию. Siege считывает настройки и выводит их содержимое. Вы можете их менять редактируя файл $HOME/.siegerc. Если такого файла у Вас нет, следует запустить утилиту siege.config, которая его сгенерирует.| |
|-h, --help |HELP, prints this section.| | |-v, --verbose |Выводит отладочные сообщения.| |
|-C, --config |CONFIGURATION, show the current config.| | |-g, --get |Совершает обращение к указанной ссылке. Получает заголовки с сервера и выводит их на экран. Отличный инструмент для точечного тестирования..| |
|-v, --verbose |VERBOSE, prints notification to screen. | |-c, --concurrent=NUM |Количество имитируемых пользователей. по умолчанию установлено 10| |
|-g, --get |GET, pull down HTTP headers and display thetransaction. Great for application debugging.| | |-i, --internet |Эта опция используется с конфигурационным файлом содержащим множество ссылок.| |
|-c, --concurrent=NUM |CONCURRENT users, default is 10| | |-b, --benchmark |Отключает задержки между запросами.| |
|-i, --internet |INTERNET user simulation, hits URLs randomly.| | |-t, --time=NUMm |Время, за которое должно пройти тестирование. Пример: -t3600S, -t60M, -t1H| |
|-b, --benchmark |BENCHMARK: no delays between requests.| | |-r, --reps=NUM |Устанавливает количество повторений теста.| |
|-t, --time=NUMm |TIMED testing where "m" is modifier S, M, or Hex: --time=1H, one hour test.| | |-f, --file=FILE |Конфигурационный файл содержащий ссылки (SIEGE_HOME/etc/urls.txt).| |
|-r, --reps=NUM |REPS, number of times to run the test.| | |
|-f, --file=FILE |FILE, select a specific URLS FILE.| | |
|-R, --rc=FILE |RC, specify an siegerc file| | |-R, --rc=FILE |RC, specify an siegerc file| |
|-l, --log[=FILE] |LOG to FILE. If FILE is not specified, the default is used: /var/log/siege.log| | |-l, --log[=FILE] |Эта опция указывает Siege что она должна записывать всю информацию в лог-файл SIEGE_HOME/var/siege.log.| |
|-m, --mark="text" |MARK, mark the log file with a string.| | |-m, --mark="text" |Эта опция позволяет указать выражение которым будут разделяться записи о разных тестированиях в лог-файле.| |
|-d, --delay=NUM |Time DELAY, random delay before each requst between 1 and NUM. (NOT COUNTED IN STATS)| | |-d, --delay=NUM |Эта опция указывает задержку между обращениями имитируемых пользователей к серверу. По умолчанию задержка происходит от 1 секунды до 3.| |
|-H, --header="text" |Add a header to request (can be many)| | |-H, --header="text" |Устанавливает параметры header в запросе HTTP| |
|-A, --user-agent="text" |Sets User-Agent in request| | |-A, --user-agent="text" |Формирует User-Agent для запроса| |
| |
| ===== Конфигурационный файл ===== |
| |
| Начиная с версии 2.00 Siege поддерживает конфигурационные файлы в которых Вы можете хранить часто-используемые команды. Это может помочь при большом количестве тестирований с почти одними и теми же настройками. Данный файл называется .seigerc и располагается в домашней директории пользователя установившего Siege. Если этого файла там нет (например устанавливали программу не Вы) то можно воспользоваться утилитой siege.config для его создания. Внутри файла находятся различные директивы с комментариями к ним. Редактирование Вы можете проводить с использованием любого текстового редактора. |
| |
| ===== Формат передаваемых URL ===== |
| |
| Siege понимает следующий формат ссылок: |
| |
| <code>[протокол://] [сервер.домен.xxx] [: порт] [/диерктория/файл]</code> |
| |
| Поддерживаются адреса только с протоколами HTTP и HTTPS. Минимум что Вы должны указать – имя сервера. Если Вы находитесь внутри какого-то домена и тестируете сервер с именем shemp, и он прописан в Вашем файле хостов или на местном DNS, тогда команда |
| “siege -u shemp” произведёт обращение к адресу shemp.домен.net/index.shtml. Если Вы хотите чтоб Siege работал с https-сервером то нужно указать дополнительно ещё и протокол. Таким образом команда “siege -u shemp” заставит программу обращаться по адресу shemp.yourdomain.net/index.shtml. |
| |
| ===== Файл с сылками ===== |
| |
| Перед тем как запустить регрессионный тест или режим имитации интернета Вам нужно передать программе список проверяемых адресов. Для этого поместите их в файл SIEGE_HOME/etc/urls.txt. В нём адреса должны располагаться по одному на строку: |
| |
| <code> |
| host.com/script.php |
| host.com/script.php |
| host.com/cgi-bin/script.pl?first=bart&last=simpson |
| host.com/cgi-bin/script.pl POST name=homer |
| host.com/script.php POST word=doh!&scope=ALL |
| </code> |
| |
| ===== Log File ===== |
| |
| Когда Siege запускается с включенной опцией логирования [-l/--log], программа заносит всю выводимую информацию в PREFIX/var/siege.log, где PREFIX – установочная директория Siege ( смотрите файл INSTALL ). В лог-файл пишется всё что выводится программой на экран в стандартном режиме. Информация при записи разделяется запятыми для быстрого импорта в другие форматы. |
| Для разделения результатов разных проверок имеется опция -m “текст”/–mark=”текст”. Она помещает указанное сообщение в лог-файл перед началом сканирования чтоб Вы смогли быстро найти его результат. Например, если Вы тестируете ссылки по протоколам http и https, Вы можете оставлять в логах пометки типа “start HTTPS testing”. Если Вы используйте опцию -m/–mark то параметр -l/–log использовать не обязательно. |