![]() |
Siege - утилита для нагрузочного тестирования веб-серверов
SIEGE – утилита для нагрузочного тестирования веб-серверов. Перевод официальной документации Оригинал: http://www.joedog.org/index/siege-manual .Вы так-же можете скачать PDF-вариант перевода – siege.pdf (6 страниц, шрифт Times New Roman, 12pt). Автор: Джеффри Фалмер (Jeffrey Fulmer) Май 2006
Введение Siege – это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы “под осадой” долгое время. Количество запросов, произведённых при “осаде”, рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы. Параметры запуска Формат запуска 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 ‘ Количество имитируемых пользователей. Опция позволяет производить тестирование веб-сервера с количеством одновременных пользователей указанных в 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). Вы можете использовать эту опцию для того чтоб указывать другой путь к нему. Например: Цитата:
‘ –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 понимает следующий формат ссылок: Цитата:
“siege -u shemp” произведёт обращение к адресу http://shemp.домен.net/index.shtml. Если Вы хотите чтоб Siege работал с https-сервером то нужно указать дополнительно ещё и протокол. Таким образом команда “siege -u https://shemp” заставит программу обращаться по адресу https://shemp.yourdomain.net/index.shtml. Файл с сылками Перед тем как запустить регрессионный тест или режим имитации интернета Вам нужно передать программе список проверяемых адресов. Для этого поместите их в файл SIEGE_HOME/etc/urls.txt. В нём адреса должны располагаться по одному на строку: Цитата:
Цитата:
Переменные Начиная с релиза версии 2.57, Siege поддерживает объявление переменных в файле .siegerc и в файлах со ссылками ( urls.txt ). Синтаксис объявления переменных Siege похож на синтаксис UNIX shell. Они объявляются по одной на строку в формате “varname=value” Название переменной помещается внутрь конструкции $() или ${}. Вы можете использовать их например для быстрого переключения между двумя протоколами проверяемых ссылок: Цитата:
Log File Когда Siege запускается с включенной опцией логирования [-l/--log], программа заносит всю выводимую информацию в PREFIX/var/siege.log, где PREFIX – установочная директория Siege ( смотрите файл INSTALL ). В лог-файл пишется всё что выводится программой на экран в стандартном режиме. Информация при записи разделяется запятыми для быстрого импорта в другие форматы. Для разделения результатов разных проверок имеется опция -m “текст”/–mark=”текст”. Она помещает указанное сообщение в лог-файл перед началом сканирования чтоб Вы смогли быстро найти его результат. Например, если Вы тестируете ссылки по протоколам http и https, Вы можете оставлять в логах пометки типа “start HTTPS testing”. Если Вы используйте опцию -m/–mark то параметр -l/–log использовать не обязательно. |
Статистика исследования
Статистика, выдаваемая программой, включает в себя общее время тестирования, общее количество переданных данных ( включая заголовки ), среднее время ответа сервера, его пропускную способность и количество обращений на которые сервер ответил кодом 200. Сам отчёт формируется скриптом Линкольна Штейна (Lincoln Stein) torture.pl. Вот пример отчёта Siege: Цитата:
Transactions – количество обращений к серверу. В примере это число высчитывается из 25 пользователей [ -c25 ] запустивших по 10 обращений [ -r10 ], что в общей сумме составляет 250. Elapsed time – общая продолжительность тестирования. Она высчитывается начиная с первого обращения к серверу и кончая получением ответа на последний запрос. В примере тест занял 14.67 секунд. Data transferred – суммарное количество данных переданное всеми имитируемыми пользователями. Оно включает в себя как тела запросов, так и их заголовки. Response time – среднее время за которое сервер успел ответить клиенту. Transaction rate – среднее число обращений которые сервер успел обработать за секунду. Оно получается путём деления общего числа запросов на затраченное время. Throughput – среднее число данных передаваемых ежесекундно от сервера к пользователям. Concurrency – количество одновременных подключений при которых сервер отвечает без задержек. Successful transactions – количество запросов на которые сервер ответил кодом меньше 400. Платформы Мульти-потоковый Siege был собран и успешно оттестирован на следующих платформах:
Авторы Jeffrey Fulmer – Спроектировал и реализовал Siege будучи в должности веб-мастера в компании “Armstrong World Industries”. Информация о лицензии Для получения полной информации о лицензии посмотрите файл COPYING. Авторские права полностью принадлежат Джеффри Фалмеру (Jeffrey Fulmer). Каждому разрешается производить и распространять копии этого документа без каких-либо изменений. Разрешено изменение этого документа и распространение его изменённых версий только в случае указания изменённых мест. |
| Время: 03:36 |