SlideShare uma empresa Scribd logo
1 de 30
Инструмент для нагрузочного
    тестирования Tsung.

     Калантай Артём
История создания
1. Erlang — был разработан компанией Ericson.
2. Tsung изначально был предназначен для нагрузочного
   тестирования Jabber-а.
3. Tsung поддерживается компнией Process-One
Преимущества Tsung
1. Написан на Erlang — отличительной особенностью языка
   является модель легковесных процессов.
2. Свободно распространяемый.
3. Протоколонезависимый - HTTP (в том числе SOAP),
   WebDAV, Jabber/XMPP, PostgreSQL, LDAP и MySQL.
4. Нагрузка может быть распределена на кластере из
   клиентских машин.
Erlang. Moдель акторов
   Erlang — функциональный язык программирования с
динамической типизацией, предназначенный для создания
распределённых вычислительных систем.
   Модель акторов представляет собой математическую модель
параллельных вычислений, которая трактует понятие «актор» как
универсальный примитив параллельного численного расчёта.
HTTP
1. Запросы GET, POST, PUT, DELETE, HEAD.
2. Автоматическое управление cookies.
3. Поддержка GET If-modified since.
4. Режим прокси для записи сессий с помощью браузера.
5. Поддержка SOAP с помощью HTTP запросов (SOAPAction
   заголовки обрабатываются).
Jabber/XMPP
1. Сообщения о аутентификации, регистрации и присутствии.
2. Чат сообщения для онлайн и оффлайн пользователей.
3. Roster- и get-запросы.
4. Многопользовательский чат: подключение к room-у,
   сообщения в room-e, смена nick-а.
5. Запросы синхронизации пользователей.
Tsung recorder
1. Настроить браузер на прокси Tsung-a (порт 8090).
2. Произвести необходимые действия.
3. Использовать файл созданный recorder-ом для
   дальнейшей конфигурации.
Файл конфигурации tsung.xml
Структура
<?xml version="1.0"?>
<tsung loglevel="info" dumptraffic="false">
  ...
</tsung>
Tsung.xml: Клиенты и серверы
Tsung-кластер:
<clients>
  <client host="test1" weight="1" maxusers="8000">
    <ip value="10.0.2.3"/>
    <ip value="10.0.2.4"/>
  </client>
  <client host="test2" weight="3" maxusers="25000" cpu="2">
    <ip value="10.1.2.5"/>
Tsung.xml: Мониторинг
<monitoring>
  <monitor host="10.1.1.94" type="erlang"/>
  <monitor host="10.1.1.95" type="munin">
    <munin port="8081"/>
  </monitor>
  <monitor host="10.1.1.96" type="snmp">
    <snmp version="v2" community="rwCommunty" port="11161"/>
  </monitor>
Tsung.xml: Наращивание нагрузки
<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>
Tsung.xml: Наращивание нагрузки (2)
Tsung.xml: User agents
<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
Tsung.xml: Наследование свойств
Tsung.xml: Сессии HTTP (1)
<sessions>
  <session name="http-session" probability="70" type="ts_http">
    <request> <http url="/images/logo.gif" method="GET"
  version="1.1" if_modified_since="Mon, 02 Apr 2012 14:13:32
  GMT"/> </request>
     <thinktime value="20" random="true"/>
     <transaction name="index_request">
        <request> <http url="/index.en.html" method="GET"
  version="1.1" /> </request>
Tsung.xml: Сессии HTTP (2)
<http url="/bla" method="POST" contents="bla=blu&amp;name=glop">
  <www_authenticate userid="vasya" passwd="test"/>
  <http_header name="Cache-Control" value="no-cache"/>
</http>
<http url='product_page' method='POST' contents_from_file='/tmp/myfile' />
<http url="/" method="GET" version="1.1">
  <add_cookie key="test" value="new"/>
  <add_cookie key="id" value="548"/>
</http>
Tsung.xml: Сессии Jabber/XMPP
<sessions>
  <session probability="100" name="jabber-example"
  type="ts_jabber">
     <request> <jabber type="connect" ack="local" /> </request>
     <thinktime value="2"/>
     <transaction name="authenticate">
       <request> <jabber type="auth_get" ack="local"/> </request>
       <request> <jabber type="auth_set_plain"
  ack="local"></jabber> </request>
Tsung.xml: Сессии смешанного типа
<request>
  <jabber type="chat" ack="no_ack" size="16" destination="offline"/>
</request>
<thinktime value="3"/>
<change_type new_type="ts_http" host="foo.bar" port="80" server_type="tcp"
   store="true"/>
<request> <http url="http://foo.bar/"/> </request>
<request> <http url="/favicon"/> </request>
<change_type new_type="ts_jabber" host="localhost" port="5222" server_type="tcp"
   restore="true"/>
Tsung.xml: Чтение из внешнего файла
Определить местоположение файла:
<options>
  <option name="users_file" id="users" value="/path/params.csv"/>
</options>
Присвоить результаты переменным:
<setdynvars sourcetype="file" fileid="users" delimiter=";"
   order="iter">
  <var name="param1" />
  <var name="param2" />
Tsung.xml: Вставка Elang кода
Для расширения функциональности Tsung-а можно использовать
  вставки Erlang кода:
<setdynvars sourcetype="file" fileid="md5" delimiter=";" order="iter">
  <var name="md5data"/>
</setdynvars>
<setdynvars sourcetype="eval"
         code="fun({Pid, DynVars})->
             {ok, Val}=ts_dynvars:lookup(md5data, DynVars),
                ts_digest:md5hex(Val) end.">
Tsung.xml Response parsing(HTTP)
Regexp:
<request>
   <dyn_variable name="mytitlevar"
  re="&lt;title&gt;(.*)&lt;/title&gt;"/>
   <http url="/testtsung.html" method="GET"
  version="1.0"/>
</request>
Tsung.xml Response parsing(SQL)

<request>
  <dyn_variable name="user_pass"
  pgsql_expr="data_row[2][3]"/>
  <dyn_variable name="user_id"
  pgsql_expr="data_row[2].user_id"/>
  <pgsql type="sql">SELECT * from users LIMIT
Tsung.xml: Loops, If, Foreach
<for var="1" from="" to="100">
   <request>
      <dyn_variable name="free_games"
  xpath="/root/games/slot/@free_games"/>
      <http url="/slot.jsp" method="GET"
  version="1.1"/>
Java GC domosti.ru под нагрузкой
Подведем итоги
1. Эффективен для высоконагруженных проектов.
2. Подходит для тестирования многих видов клиент-
   серверных приложений.
3. Может использоваться всего на одной машине.
Недостатки Tsung
1. Отсутствует GUI
2. Не работает под Windows
Полезные ссылки
http://tsung.erlang-projects.org - официальный сайт

http://www.process-one.net – поддержка

http://www.erlang.org - официальный сайт Erlang

http://tsung.erlang-projects.org/user_manual.html – руководство
http://www.opentrust.ru/
Вопросы?
Приложение 1: Установка и запуск
1. apt-get install gnuplot-nox libtemplate-perl libhtml-template-perl
   libhtml-template-expr-perl
2. Скачать последнюю версию tsung-1.4.1.tar.gz.
3. Распаковать tar -zxvf tsung-1.4.1 .tar.gz
4. Установить ./configure && make && make install
5. Создать каталог с именем .tsung в root-директории и
   конфигурационный файл tsung.xml в ней
Приложение 2: Параметры запуска
 tsung <options> start|stop|debug|status
 Options:
   -f <file> set configuration file (default is
   ~/.tsung/tsung.xml)
               (use - for standard input)
   -l <logdir> set log directory (default is
   ~/.tsung/log/YYYYMMDD-HHMM/)
   -i <id>      set controller id (default is empty)

Mais conteúdo relacionado

Mais procurados

Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Alexey Lesovsky
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиKirill Mokevnin
 
Илья Евлампиев - Grinder
Илья Евлампиев - GrinderИлья Евлампиев - Grinder
Илья Евлампиев - GrinderAlexey Chumagin
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)ZFConf Conference
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиентыRoman Brovko
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиBusiness incubator HSE
 
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.jsВячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.jsYandex
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомAlexander Titov
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Alexey Lesovsky
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleAlexey Remnev
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)Ontico
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellAlexey Lesovsky
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Alexey Lesovsky
 
Тестирование производительности систем мониторинга на платформе Microsoft SCO...
Тестирование производительности систем мониторинга на платформе Microsoft SCO...Тестирование производительности систем мониторинга на платформе Microsoft SCO...
Тестирование производительности систем мониторинга на платформе Microsoft SCO...SQALab
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис РечкуновDevDay
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 

Mais procurados (20)

Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
 
Илья Евлампиев - Grinder
Илья Евлампиев - GrinderИлья Евлампиев - Grinder
Илья Евлампиев - Grinder
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
Chef
ChefChef
Chef
 
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.jsВячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
Вячеслав Олиянчук — Яндекс.Авто 2.0 на Node.js
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - Ansible
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of Hell
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
 
Тестирование производительности систем мониторинга на платформе Microsoft SCO...
Тестирование производительности систем мониторинга на платформе Microsoft SCO...Тестирование производительности систем мониторинга на платформе Microsoft SCO...
Тестирование производительности систем мониторинга на платформе Microsoft SCO...
 
Wordpress Cron
Wordpress CronWordpress Cron
Wordpress Cron
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 

Semelhante a Инструмент для нагрузочного тестирования Tsung (Артём Калантай)

Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиZestranec
 
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Timur Shemsedinov
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?phpdevby
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиSQALab
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеKaspersky
 
Android emulators features
Android emulators featuresAndroid emulators features
Android emulators featuresRoman Butok
 
Js templating stepan_reznikov
Js templating stepan_reznikovJs templating stepan_reznikov
Js templating stepan_reznikovyaevents
 
Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Yandex
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияSQALab
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5Technopark
 
Публичный IaaS на базе ПО с открытым кодом
Публичный IaaS на базе ПО с открытым кодомПубличный IaaS на базе ПО с открытым кодом
Публичный IaaS на базе ПО с открытым кодомCloud IaaS Provider Tucha
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9Technopark
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajaxYandex
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиSQALab
 

Semelhante a Инструмент для нагрузочного тестирования Tsung (Артём Калантай) (20)

Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
 
Android emulators features
Android emulators featuresAndroid emulators features
Android emulators features
 
Js templating stepan_reznikov
Js templating stepan_reznikovJs templating stepan_reznikov
Js templating stepan_reznikov
 
Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"Степан Резников "Шаблонизация на клиенте"
Степан Резников "Шаблонизация на клиенте"
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
course js day 4
course js day 4course js day 4
course js day 4
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестирования
 
Web осень 2013 лекция 5
Web осень 2013 лекция 5Web осень 2013 лекция 5
Web осень 2013 лекция 5
 
Публичный IaaS на базе ПО с открытым кодом
Публичный IaaS на базе ПО с открытым кодомПубличный IaaS на базе ПО с открытым кодом
Публичный IaaS на базе ПО с открытым кодом
 
бегун
бегунбегун
бегун
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajax
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 

Mais de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Инструмент для нагрузочного тестирования Tsung (Артём Калантай)

  • 1. Инструмент для нагрузочного тестирования Tsung. Калантай Артём
  • 2. История создания 1. Erlang — был разработан компанией Ericson. 2. Tsung изначально был предназначен для нагрузочного тестирования Jabber-а. 3. Tsung поддерживается компнией Process-One
  • 3. Преимущества Tsung 1. Написан на Erlang — отличительной особенностью языка является модель легковесных процессов. 2. Свободно распространяемый. 3. Протоколонезависимый - HTTP (в том числе SOAP), WebDAV, Jabber/XMPP, PostgreSQL, LDAP и MySQL. 4. Нагрузка может быть распределена на кластере из клиентских машин.
  • 4. Erlang. Moдель акторов Erlang — функциональный язык программирования с динамической типизацией, предназначенный для создания распределённых вычислительных систем. Модель акторов представляет собой математическую модель параллельных вычислений, которая трактует понятие «актор» как универсальный примитив параллельного численного расчёта.
  • 5. HTTP 1. Запросы GET, POST, PUT, DELETE, HEAD. 2. Автоматическое управление cookies. 3. Поддержка GET If-modified since. 4. Режим прокси для записи сессий с помощью браузера. 5. Поддержка SOAP с помощью HTTP запросов (SOAPAction заголовки обрабатываются).
  • 6. Jabber/XMPP 1. Сообщения о аутентификации, регистрации и присутствии. 2. Чат сообщения для онлайн и оффлайн пользователей. 3. Roster- и get-запросы. 4. Многопользовательский чат: подключение к room-у, сообщения в room-e, смена nick-а. 5. Запросы синхронизации пользователей.
  • 7. Tsung recorder 1. Настроить браузер на прокси Tsung-a (порт 8090). 2. Произвести необходимые действия. 3. Использовать файл созданный recorder-ом для дальнейшей конфигурации.
  • 8. Файл конфигурации tsung.xml Структура <?xml version="1.0"?> <tsung loglevel="info" dumptraffic="false"> ... </tsung>
  • 9. Tsung.xml: Клиенты и серверы Tsung-кластер: <clients> <client host="test1" weight="1" maxusers="8000"> <ip value="10.0.2.3"/> <ip value="10.0.2.4"/> </client> <client host="test2" weight="3" maxusers="25000" cpu="2"> <ip value="10.1.2.5"/>
  • 10. Tsung.xml: Мониторинг <monitoring> <monitor host="10.1.1.94" type="erlang"/> <monitor host="10.1.1.95" type="munin"> <munin port="8081"/> </monitor> <monitor host="10.1.1.96" type="snmp"> <snmp version="v2" community="rwCommunty" port="11161"/> </monitor>
  • 11. Tsung.xml: Наращивание нагрузки <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>
  • 13. Tsung.xml: User agents <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
  • 15. Tsung.xml: Сессии HTTP (1) <sessions> <session name="http-session" probability="70" type="ts_http"> <request> <http url="/images/logo.gif" method="GET" version="1.1" if_modified_since="Mon, 02 Apr 2012 14:13:32 GMT"/> </request> <thinktime value="20" random="true"/> <transaction name="index_request"> <request> <http url="/index.en.html" method="GET" version="1.1" /> </request>
  • 16. Tsung.xml: Сессии HTTP (2) <http url="/bla" method="POST" contents="bla=blu&amp;name=glop"> <www_authenticate userid="vasya" passwd="test"/> <http_header name="Cache-Control" value="no-cache"/> </http> <http url='product_page' method='POST' contents_from_file='/tmp/myfile' /> <http url="/" method="GET" version="1.1"> <add_cookie key="test" value="new"/> <add_cookie key="id" value="548"/> </http>
  • 17. Tsung.xml: Сессии Jabber/XMPP <sessions> <session probability="100" name="jabber-example" type="ts_jabber"> <request> <jabber type="connect" ack="local" /> </request> <thinktime value="2"/> <transaction name="authenticate"> <request> <jabber type="auth_get" ack="local"/> </request> <request> <jabber type="auth_set_plain" ack="local"></jabber> </request>
  • 18. Tsung.xml: Сессии смешанного типа <request> <jabber type="chat" ack="no_ack" size="16" destination="offline"/> </request> <thinktime value="3"/> <change_type new_type="ts_http" host="foo.bar" port="80" server_type="tcp" store="true"/> <request> <http url="http://foo.bar/"/> </request> <request> <http url="/favicon"/> </request> <change_type new_type="ts_jabber" host="localhost" port="5222" server_type="tcp" restore="true"/>
  • 19. Tsung.xml: Чтение из внешнего файла Определить местоположение файла: <options> <option name="users_file" id="users" value="/path/params.csv"/> </options> Присвоить результаты переменным: <setdynvars sourcetype="file" fileid="users" delimiter=";" order="iter"> <var name="param1" /> <var name="param2" />
  • 20. Tsung.xml: Вставка Elang кода Для расширения функциональности Tsung-а можно использовать вставки Erlang кода: <setdynvars sourcetype="file" fileid="md5" delimiter=";" order="iter"> <var name="md5data"/> </setdynvars> <setdynvars sourcetype="eval" code="fun({Pid, DynVars})-> {ok, Val}=ts_dynvars:lookup(md5data, DynVars), ts_digest:md5hex(Val) end.">
  • 21. Tsung.xml Response parsing(HTTP) Regexp: <request> <dyn_variable name="mytitlevar" re="&lt;title&gt;(.*)&lt;/title&gt;"/> <http url="/testtsung.html" method="GET" version="1.0"/> </request>
  • 22. Tsung.xml Response parsing(SQL) <request> <dyn_variable name="user_pass" pgsql_expr="data_row[2][3]"/> <dyn_variable name="user_id" pgsql_expr="data_row[2].user_id"/> <pgsql type="sql">SELECT * from users LIMIT
  • 23. Tsung.xml: Loops, If, Foreach <for var="1" from="" to="100"> <request> <dyn_variable name="free_games" xpath="/root/games/slot/@free_games"/> <http url="/slot.jsp" method="GET" version="1.1"/>
  • 24. Java GC domosti.ru под нагрузкой
  • 25. Подведем итоги 1. Эффективен для высоконагруженных проектов. 2. Подходит для тестирования многих видов клиент- серверных приложений. 3. Может использоваться всего на одной машине.
  • 26. Недостатки Tsung 1. Отсутствует GUI 2. Не работает под Windows
  • 27. Полезные ссылки http://tsung.erlang-projects.org - официальный сайт http://www.process-one.net – поддержка http://www.erlang.org - официальный сайт Erlang http://tsung.erlang-projects.org/user_manual.html – руководство http://www.opentrust.ru/
  • 29. Приложение 1: Установка и запуск 1. apt-get install gnuplot-nox libtemplate-perl libhtml-template-perl libhtml-template-expr-perl 2. Скачать последнюю версию tsung-1.4.1.tar.gz. 3. Распаковать tar -zxvf tsung-1.4.1 .tar.gz 4. Установить ./configure && make && make install 5. Создать каталог с именем .tsung в root-директории и конфигурационный файл tsung.xml в ней
  • 30. Приложение 2: Параметры запуска tsung <options> start|stop|debug|status Options: -f <file> set configuration file (default is ~/.tsung/tsung.xml) (use - for standard input) -l <logdir> set log directory (default is ~/.tsung/log/YYYYMMDD-HHMM/) -i <id> set controller id (default is empty)