- Tsung
-
Tsung Тип Средство для нагрузочного тестирования
Разработчик Nicolas Niclausse
Написана на Erlang
Интерфейс командная строка
Операционная система Linux, Unix
Последняя версия 1.4.1 (Sep 2011, 08)
Лицензия GPLv2
Сайт Tsung (изначально известный как IDX-Tsunami, сейчас Tsunami next generation) — это распределенная система нагрузочного тестирования, написанная на Erlang’е. Разработку Tsung начал Nicolas Niclausse в 2001 году изначально это была распределенная система для нагрузочного тестирования jabber’а для внутренних нужд компании IDEALX, сейчас OpenTrust. Через несколько месяцев проект развился в опенсорсный мультипротокольный инструмент для нагрузочного тестирования. Поддержка HTTP была добавлена в 2003 году.
Tsung может использоваться для тестирования разных протоколов HTTP (в том числе SOAP), WebDAV, Jabber, LDAP, а также PostgreSQL и MySQL, а также дает возможность эмулировать кластер из клиентских машин.
Содержание
Возможности в рамках HTTP
В рамках HTTP протокола Tsung позволяет имитировать разные методы (GET, GET if-modified-since, POST, PUT, DELETE, HEAD), управлять куками, как автоматически так и вручную, добавлять заголовки (в том числе SOAP), производить базовую аутентификацию, имитировать разные юзерагенты, записывать действия юзера с помощью рекордера.
Возможности в рамках Jabber/XMPP
В рамках протокола Jabber/XMPP это сообщения о аутентификации, регистрации присутствии, сообщения в чате, работа со списком пользователей, румами, а также настройка синхронизации пользователей.
Структура
Файл конфигурации Tsung’а это XML файл. Основной тег <tsung>, в нём заключается вся конфигурация и он имеет два свойства: loglevel и dumptraffic, loglevel как и везде регулирует подробность лога, dumtraffic используется для отладки. При параметре dumptraffic=true создается файл лога dump.log, в который подробно записывается каждый ответ от сервера. В последней версии Tsung, есть варианты dumptrafic=light — первые 44 байта ответа сервера и dumptrafic=protocol — только следующие данные date;pid;id;http method;host;URL;HTTP status;size;match;error.
<?xml version="1.0"?> <tsung loglevel="info" dumptraffic="false"> ... </tsung>
Клиенты и серверы
Можно использовать несколько виртуальных IP, это крайне полезно в случае, если load-balancer на сервере использует IP клиента для распределения траффика между кластером серверов.
<clients> <client host="test1" weight="1" maxusers="500"> <ip value="10.0.2.3"/> <ip value="10.0.2.4"/> </client> <client host="test2" weight="3" maxusers="250" cpu="2"> <ip value="10.1.2.5"/> </client> </clients> <server host="10.2.2.10" port="8081" type="tcp"/>
Даже если Erlang VM теперь способна справляться с несколькими ядрами(erlang SMP), тесты показывают, что для клиентов Tsung более эффективно использовать одну VM на ядро (с отключенным SMP). Однако, параметр cpu должен быть равным количеству ядер ваших нод. Если вы предпочитаете использовать erlang SMP, добавьте опцию -s при старте Tsung (и не задавайте cpu в файле конфигурации).
В данном примере, вторая машина используется в кластере Tsung с большим «весом» и двумя ядрами. По умолчанию, нагрузка равномерно распределена на все ядра (одно ядро на клиент по умолчанию). Параметр weight(integer) может быть использован для настройки приоритетности машины клиента. В частности, если у одного клиента вес 1, а у другого 2, второй запустит в два раза больше юзеров, чем первый (пропорции будут 1/3 и 2/3). В приведенном примере, где у второго клиента cpu=2 и weight=3, вес равен 1,5 для каждого ядра.
Мониторинг
Tsung поддерживает несколько типов мониторинга сервера. Это родной агент мониторинга Erlang, всем известный Munin и SNMP, агент должен быть установлен на стороне сервера. Если нагрузка делается на кластер серверов, можно применять разные агенты для разных серверов.
<monitoring> <monitor host="10.1.1.94" type="erlang"/> <monitor host="10.1.1.94" type="munin"> <munin port="8081"/> </monitor> <monitor host="10.1.1.94" type="snmp"> <snmp version="v2" community="rwCommunity" port="11161"/> </monitor> </monitoring>
Фазы нагрузки
Нагрузку можно разбить на несколько фаз, например плавно повышая нагрузку. В настройках можно задать длительность каждой фазы и очередность выполнения фаз. В каждой фазе можно установить количество конкуретных пользователей 2-мя способами: задать количество пользователей за промежуток времени, например 100п/с, либо сказать с какой частотой создавать пользователей, например 1 пользователь каждые 0.01с. В стабильную нагрузку можно вставить специфическую сессию в оп-ределенное время, для имитации какой либо проверки или запуска специфического сервиса.
<load> <arrivalphase phase="1" duration="10" unit="minute"> <!-- Фаза разогрева --> <users interarrival="0.1" unit="second"> </users> </arrivalphase> <arrivalphase phase="2" duration="60" unit="minute"> <!-- Фаза нагрузки --> <users arrivalrate="1000" unit="second"> </users> </arrivalphase> <!-- Специальные сессии --> <user session="addManyProducts" start_time="20" unit="minute"/> <user session="checkOrders" start_time="25" unit="minute"/> </load>
User agents
Пример настройки для имитации разных браузеров, устанавливается процентное соотношение между юзерагентами, этот процент определяет вероятность присвоения сессии юзера, одного из указанных агентов, по умолчанию присваивается — tsung
<option type="ts_http" name="user_agent"> <user_agent probability="60"> Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0 </user_agent> <user_agent probability="20"> Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30) </user_agent> <user_agent probability="20"> Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21 </user_agent> </option>
Установка
- apt-get install gnuplot-nox libtemplate-perl libhtml-template-perl libhtml-template-expr-perl
- Скачать последнюю версию tsung-1.4.1.tar.gz.
- Распаковать tar -zxvf tsung-1.4.1 .tar.gz
- Установить ./configure && make && make install
- Создать каталог с именем .tsung в root-директории и конфигурационный файл tsung.xml в ней
Примечания
Ссылки
На эту статью не ссылаются другие статьи Википедии. Пожалуйста, воспользуйтесь подсказкой и установите ссылки в соответствии с принятыми рекомендациями.Категории:- Программное обеспечение по алфавиту
- Тестирование программного обеспечения
Wikimedia Foundation. 2010.