SlideShare a Scribd company logo
1 of 107
Download to read offline
Яндекс.Танк	
  
Олесь	
  Писаренко	
  
	
   Руководитель службы нагрузочного тестирования

	
  

	
   Я.Субботник,	
  Москва,	
  28	
  июля,	
  2012	
  года	
  
Содержание	
  
	
  

	
  




2	
  
Содержание	
  
•  Яндекс.Танк	
  

	
  

	
  




3	
  
Содержание	
  
•  Яндекс.Танк	
  

•  Особенности	
  

	
  

	
  




4	
  
Содержание	
  
•  Яндекс.Танк	
  

•  Особенности	
  

•  Простые	
  примеры	
  

	
  

	
  



5	
  
Содержание	
  
•  Яндекс.Танк	
  

•  Особенности	
  

•  Простые	
  примеры	
  

•  Немного	
  хардкора	
  

	
  

	
  

6	
  
Содержание	
  
•  Яндекс.Танк	
  

•  Особенности	
  

•  Простые	
  примеры	
  

•  Немного	
  хардкора	
  

•  Ссылки	
  

	
  

7	
  
Жаргонарий	
  

	
  
	
  




8	
  
Жаргонарий	
  

	
   	
  Танк	
  —	
  источник	
  нагрузки	
  
l 



	
  




9	
  
Жаргонарий	
  

	
   	
  Танк	
  —	
  источник	
  нагрузки	
  
l 



	
   	
  Мишень	
  —	
  объект	
  нагрузки	
  
l 



	
  




10	
  
Жаргонарий	
  

	
   	
  Танк	
  —	
  источник	
  нагрузки	
  
l 



	
   	
  Мишень	
  —	
  объект	
  нагрузки	
  
l 



l     	
  Стрельба	
  —	
  тест	
  

	
  




11	
  
Жаргонарий	
  

	
   	
  Танк	
  —	
  источник	
  нагрузки	
  
l 



	
   	
  Мишень	
  —	
  объект	
  нагрузки	
  
l 



l     	
  Стрельба	
  —	
  тест	
  

l     	
  Патрон	
  —	
  запрос	
  к	
  объекту	
  нагрузки	
  

	
  



12	
  
Жаргонарий	
  

	
   	
  Танк	
  —	
  источник	
  нагрузки	
  
l 



	
   	
  Мишень	
  —	
  объект	
  нагрузки	
  
l 



  	
  Стрельба	
  —	
  тест	
  
l 



  	
  Патрон	
  —	
  запрос	
  к	
  объекту	
  нагрузки	
  
l 



  	
  Лента	
  —	
  последовательность	
  запросов	
  
l 




13	
  
Яндекс.Танк	
  

	
  
	
  




14	
  
Яндекс.Танк	
  

	
   	
  Производительный	
  
l 



	
  




15	
  
Яндекс.Танк	
  

	
   	
  Производительный	
  
l 



	
   	
  Простой	
  
l 



	
  




16	
  
Яндекс.Танк	
  

	
   	
  Производительный	
  
l 



	
   	
  Простой	
  
l 



  	
  Opensource	
  (as	
  is)	
  
l 




17	
  
Движок	
  Яндекс.Танка	
  

Phantom:	
  
	
  
	
  
Высокопроизводительный	
  вебсервер,	
  прокси,	
  
клиент.	
  	
  

Разработчик	
  -­‐	
  Евгений	
  Мамчиц	
  

hips://github.com/mamchits/phantom	
  

	
  



18	
  
Немного	
  истории	
  

Подробнее	
  здесь:	
  
	
  

«Вебсервер	
  Phantom»	
  
	
  

докладчик	
  Влад	
  Селиверстов	
  

hip://clck.ru/1Knyv	
  

	
  




19	
  
Немного	
  истории	
  

О	
  нашем	
  инструменте:	
  
	
  

«Танки	
  в	
  Лунапарке»	
  
	
  

докладчик	
  Андрей	
  Кузьмичев	
  

hip://clck.ru/1Ko-­‐z	
  

	
  




20	
  
Особенности	
  




21	
  
Особенности	
  

l     	
  Консольный	
  

	
  




22	
  
Особенности	
  

l     	
  Консольный	
  

l     	
  Linux-­‐only	
  

	
  




23	
  
Особенности	
  

l     	
  Консольный	
  

l     	
  Linux-­‐only	
  

l     	
  Hit-­‐based	
  

	
  




24	
  
Особенности	
  

  	
  Консольный	
  
l 



  	
  Linux-­‐only	
  
l 



  	
  Hit-­‐based	
  
l 



  	
  Модульный	
  
l 




25	
  
Что	
  умеет 	
  	
  




26	
  
Что	
  умеет 	
  	
  

l     	
  HTTP/HTTPS/Stateless	
  

	
  




27	
  
Что	
  умеет 	
  	
  

l     	
  HTTP/HTTPS/Stateless	
  

l     	
  IPv4/IPv6	
  

	
  




28	
  
Что	
  умеет 	
  	
  

  	
  HTTP/HTTPS/Stateless	
  
l 



  	
  IPv4/IPv6	
  
l 



  	
  До	
  100к	
  запросов/cек	
  	
  
l 




29	
  
Что	
  умеет 	
  	
  

l     	
  HTTP/HTTPS/Stateless	
  

l     	
  IPv4/IPv6	
  

l     	
  До	
  100к	
  запросов/cек	
  	
  

l     	
  «Раскладка»	
  времён	
  

	
  



30	
  
Что	
  умеет 	
  	
  

  	
  HTTP/HTTPS/Stateless	
  
l 



  	
  IPv4/IPv6	
  
l 



  	
  До	
  100к	
  запросов/cек	
  	
  
l 



  	
  «Раскладка»	
  времён	
  
l 



  	
  Многое	
  другое	
  
l 




31	
  
Сразу	
  в	
  лоб	
  


Графиков	
  не	
  будет	
  




32	
  
Собрались	
  




33	
  
Установка	
  

Требования:	
  
	
  
	
   	
  Ubuntu	
  Server/Desktop	
  
l 



  	
  32/64bit	
  
l 



  	
  Lucid/Precise	
  
l 




34	
  
Установка	
  
	
   Добавляем необходимые репозитории

	
     # Ubuntu Lucid
       deb http://mirror.yandex.ru/mirrors/tank common main
       deb http://mirror.yandex.ru/mirrors/tank lucid main
	
  

       # Ubuntu Precise
       deb http://mirror.yandex.ru/mirrors/tank common main
       deb http://mirror.yandex.ru/mirrors/tank precise main




35	
  
Установка	
  
	
     $ sudo apt-get update

	
  
       $ sudo apt-get install yandex-load-tank-base
	
  

       $ dpkg -l | grep tank
       ii yandex-load-tank-base




36	
  
Подготовка	
  
	
     $ lunapark
       ==== Welcome to Lunapark ====
	
     Usage:
          lunapark AMMO-FILE [OPTIONS]
	
       Try `lunapark --help' for more information.



       $ nano load.conf




37	
  
Пример	
  1	
  

 Тестирование	
  HTTP	
  сервиса	
  постоянной	
  нагрузкой	
  в	
  
 10	
  рпс.	
  	
  

 Запрашиваем	
  корневую	
  страницу.	
  	
  

 	
  

 	
  



38	
  
Пример	
  1	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    uri = /




39	
  
Пример	
  1	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    uri = /




40	
  
Пример	
  1	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    uri = /




41	
  
Пример	
  1	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    uri = /




42	
  
Пример	
  1	
  
  Запускаем стрельбу

    $ lunapark
    ==== Welcome to Lunapark ====
    doctor-desktop.yandex.ru (doctor)
    phantom=0.14.0
    yandex-load-tank=N/A
    ammo=/home/doctor/10/ammo_20120725-180420.txt

    ==== Stepper ====
    Creating cases tree: 100%

    Case: 3. Ammo type: uri
    Ammo Generating: 100%
    lunapark: starting preproc...   Done




43	
  
Пример	
  1	
  




44	
  
Пример	
  1	
  




45	
  
Пример	
  1	
  




46	
  
Пример	
  1	
  




47	
  
Пример	
  1	
  




48	
  
Пример	
  1	
  




49	
  
Пример	
  1	
  




50	
  
Пример	
  1	
  




51	
  
Пример	
  2	
  

 Тестирование	
  HTTP	
  сервиса	
  линейно-­‐возрастающей	
  
 нагрузкой	
  до	
  100	
  рпс.	
  	
  

 Запрашиваем	
  корневую	
  страницу.	
  	
  

 Используем	
  IPv6	
  +	
  SSL	
  

 	
  

 	
  

52	
  
Пример	
  2	
  

    $cat load.conf

    # Tank Config File
    address=0:0:0:0:0:0:0:1:443 #
    load = line (1,100,10m) #Схема нагрузки
    ssl=1 # включение режима SSL
    # Перечисление заголовков и GET запросов:
    uri = /




53	
  
Пример	
  2	
  




54	
  
Пример	
  3	
  

 Тестирование	
  HTTP	
  сервиса	
  ступенчато-­‐
 возрастающей	
  нагрузкой	
  до	
  100	
  рпс.	
  	
  

 Запрашиваем	
  корневую	
  страницу.	
  	
  

 Используем	
  IPv6	
  +	
  SSL	
  

 	
  

 	
  

55	
  
Пример	
  3	
  

    $cat load.conf

    # Tank Config File
    address=0:0:0:0:0:0:0:1:443 #
    load = step (1,100,10,1m) #Схема нагрузки
    ssl=1 # включение режима SSL
    # Перечисление заголовков и GET запросов:
    uri = /




56	
  
Пример	
  3	
  




57	
  
Пример	
  4	
  

 Тестирование	
  HTTP	
  сервиса	
  c	
  прогревом,	
  линейно-­‐
 ступенчато-­‐возрастающей	
  нагрузкой	
  до	
  30	
  рпс	
  с	
  
 одним	
  «спайком»	
  до	
  100	
  рпс	
  и	
  плавным	
  снижением	
  
 нагрузки.	
  	
  

 Запрашиваем	
  корневую	
  страницу.	
  	
  

 Используем	
  IPv6	
  +	
  SSL	
  

 	
  

 	
  
58	
  
Пример	
  4	
  

    $cat load.conf

    # Tank Config File
    address=0:0:0:0:0:0:0:1:443 #
    load = const(1,1m), line(1,10,1m), step(10,30,10,1m)
    load = const(30,1m), const(100,1), line(100,1,1m)
    ssl=1 # включение режима SSL
    # Перечисление заголовков и GET запросов:
    uri = /




59	
  
Пример	
  4	
  




60	
  
Пример	
  5	
  

 Тестирование	
  HTTP	
  сервиса	
  постоянной	
  нагрузкой	
  
 10	
  рпс.	
  	
  

 Запрашиваем	
  несколько	
  страниц	
  с	
  
 определенными	
  заголовками.	
  	
  

 Используем	
  IPv6	
  +	
  SSL	
  

 	
  

 	
  
61	
  
Пример	
  5	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    header_http = 1.1
    header_connection = close
    header_host = example.com
    uri = /
    uri = /buy




62	
  
Пример	
  5	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    header_http = 1.1
    header_connection = close
    header_host = example.com
    uri = /
    uri = /buy




63	
  
Пример	
  5	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    header_http = 1.1
    header_connection = close
    header_host = example.com
    uri = /
    uri = /buy




64	
  
Пример	
  5	
  

    $cat load.conf

    # Tank Config File
    address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
    load = const (10,10m) #Схема нагрузки
    # Перечисление заголовков и GET запросов:
    header_http = 1.1
    header_connection = close
    header_host = example.com
    uri = /
    uri = /buy




65	
  
Это	
  были	
  цветочки	
  




66	
  
Да	
  сколько	
  можно!?	
  

	
  
	
  




Потерпите,	
  мы	
  уже	
  прошли	
  половину	
  

67	
  
Немного	
  хардкора	
  

	
  
	
  




68	
  
Немного	
  хардкора	
  

	
  
Что делать в сложных случаях ?
	
  




69	
  
Немного	
  хардкора	
  

	
  
Как выглядит обычный HTTP запрос?
	
  




70	
  
Немного	
  хардкора	
  

               Request-Line
	
  
	
  
               Request Headers




               Data (OPTIONAL)




71	
  
Немного	
  хардкора	
  

               POST / HTTP/1.1
	
  
	
             Host: example.com
               Content-Length:3
               Connection: Close



               uho




72	
  
Немного	
  хардкора	
  
Запрос для Яндекс.Танка будет таким:

	
  80
    POST / HTTP/1.1
	
  Host: example.com
    Content-Length:3
    Connection: Close

 uho




73	
  
Немного	
  хардкора	
  
Запрос для Яндекс.Танка будет таким:

	
  80
    POST / HTTP/1.1
	
  Host: example.com
    Content-Length:3
    Connection: Close

 uho




74	
  
Немного	
  хардкора	
  
Запрос для Яндекс.Танка будет таким:

	
  80
    POST / HTTP/1.1
	
  Host: example.com
    Content-Length:3
    Connection: Close

 uho


  Сохраним этот запрос в файл ammo.txt



75	
  
Немного	
  хардкора	
  
Упростим load.conf

	
   $cat   load.conf

       # Tank Config File
	
     address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
       load = const (10,10m) #Схема нагрузки
       # Перечисление заголовков и GET запросов:
       header_http = 1.1
       header_connection = close
       header_host = target.yandex.net
       uri = /
       uri = /buy




76	
  
Немного	
  хардкора	
  
Упростим load.conf

	
   $cat   load.conf

       # Tank Config File
	
     address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
       load = const (10,10m) #Схема нагрузки
       # Перечисление заголовков и GET запросов:
       header_http = 1.1
       header_connection = close
       header_host = target.yandex.net
       uri = /
       uri = /buy




77	
  
Немного	
  хардкора	
  
Упростим load.conf

	
   $cat   load.conf

     # Tank Config File
	
   address=127.0.0.1:80 #Адрес (IP only!) и порт стенда
     load = const (10,10m) #Схема нагрузки




78	
  
Немного	
  хардкора	
  
  Запускаем стрельбу

    $ lunapark ammo.txt
    ==== Welcome to Lunapark ====
    doctor-desktop.yandex.ru (doctor)
    phantom=0.14.0
    yandex-load-tank=N/A
    ammo=/home/doctor/10/ammo.txt

    ==== Stepper ====
    Creating cases tree: 100%

    Case: 3. Ammo type: request
    Ammo Generating: 100%
    lunapark: starting preproc...   Done




79	
  
Немного	
  хардкора	
  
  Запускаем стрельбу

    $ lunapark ammo.txt
    ==== Welcome to Lunapark ====
    doctor-desktop.yandex.ru (doctor)
    phantom=0.14.0
    yandex-load-tank=N/A
    ammo=/home/doctor/10/ammo.txt

    ==== Stepper ====
    Creating cases tree: 100%

    Case: 3. Ammo type: request
    Ammo Generating: 100%
    lunapark: starting preproc...   Done




80	
  
Немного	
  хардкора	
  
  Ура! Стреляет!




81	
  
Немного	
  хардкора	
  


А теперь склеим несколько запросов
и запишем их в файл ammo.txt друг за
другом




82	
  
Немного	
  хардкора	
  
             80
             POST / HTTP/1.1
             Host: example.com
             Content-Length:3
             Connection: Close

             uho

         +   80
             POST / HTTP/1.1


                                 =
             Host: example.com
             Content-Length:3
             Connection: Close

             nos
         +
             80
             POST / HTTP/1.1
             Host: example.com
             Content-Length:3
             Connection: Close

             rot


83	
  
Немного	
  хардкора	
  
   Мы получили «ленту» запросов




84	
  
Немного	
  хардкора	
  
  Мы получили «ленту» запросов




85	
  
Немного	
  хардкора	
  
  Запуск аналогичен одиночному запросу:

    $ lunapark ammo.txt
    ==== Welcome to Lunapark ====
    doctor-desktop.yandex.ru (doctor)
    phantom=0.14.0
    yandex-load-tank=N/A
    ammo=/home/doctor/10/ammo.txt

    ==== Stepper ====
    Creating cases tree: 100%

    Case: 3. Ammo type: request
    Ammo Generating: 100%
    lunapark: starting preproc...   Done




86	
  
Можно	
  перед0хнУть	
  




87	
  
Еще	
  немного...	
  




88	
  
Еще	
  немного...	
  
  Все результаты теста сбрасываются в файл phout.txt

  $ head phout*
  ==> phout_20120725-172045.txt <==

  1343222446.181   front_page   1533   273   29   1002   229   1238   18   297   0   200
  1343222446.288   front_page   1261   681   14   519    47    1144   18   297   0   200
  1343222446.388   front_page   926    365   18   506    37    830    18   297   0   200
  1343222446.488   front_page   883    242   11   600    30    811    18   297   0   200
  1343222446.588   front_page   521    214   9    267    31    437    18   297   0   200
  1343222446.688   front_page   877    228   15   524    110   720    18   297   0   200
  1343222446.788   front_page   1240   677   15   506    42    1145   18   297   0   200
  1343222446.888   front_page   1102   319   16   722    45    1006   18   297   0   200
  1343222446.988   front_page   857    246   14   552    45    757    18   297   0   200




89	
  
Еще	
  немного...	
  

   phout.txt - основное
   хранилище
   не агрегированных
   данных




90	
  
Еще	
  немного...	
  

   Формат phout.txt хорошо описан в
   документации




91	
  
Еще	
  немного...	
  

   Формат phout.txt хорошо описан в
   документации

   Зачем?




92	
  
Затем,	
  что...	
  
                       Excel   loadosophia
     gnuplot




         JS
                 phout.txt       DB




                  API           ???


93	
  
А	
  могу	
  ли	
  я...?	
  Да!	
  
     THREAD TEST         SPIKE TEST
                                             CUSTOM TIMINGS
                                 WEBDAV
          GZIP           POST
                                            RECOVERY TEST

                 POP3            REQ FILE
CGI PARAM                                       GET
                           SMTP
     URLENCODE
                                      LOOP       MULTIPART
                        COOKIE

             TAGS                         HEADERS


94	
  
А	
  могу	
  ли	
  я...?	
  Да!	
  
     THREAD TEST         SPIKE TEST
                                             CUSTOM TIMINGS
                                 WEBDAV


README.TXT
          GZIP           POST
                                            RECOVERY TEST

                 POP3            REQ FILE
CGI PARAM                                       GET
                           SMTP
     URLENCODE
                                      LOOP       MULTIPART
                        COOKIE

             TAGS                         HEADERS


95	
  
Почти	
  всё	
  




96	
  
Полезные	
  ссылки	
  
Приготовились ...3..2..1
	
  

	
  




97	
  
Phantom	
  
http://clck.ru/1KRej
	
  

	
  

                       Евгений
                       Мамчиц




98	
  
Phantom	
  ARM	
  	
  
http://clck.ru/1KRhJ
	
  

	
  

                         Дмитрий
                         Билунов




99	
  
Phantom	
  Docs	
  	
  
http://clck.ru/1KRhX
	
  

	
  

                          Григорий
                          Комиссаров




100	
  
Firebat	
  console	
  	
  
http://clck.ru/1KRhp
 	
  

 	
  

                             Григорий
                             Комиссаров




 101	
  
Loadosophia	
  	
  
http://clck.ru/1KodD
	
  

	
  

                       Андрей
                       Похилько




102	
  
Яндекс.Танк	
  	
  
http://clck.ru/1KRiB
	
  

	
  




103	
  
Yandex-­‐load	
  	
  
http://clck.ru/1KRiP
 	
  

 	
  




 104	
  
Спасибо	
  этим	
  ребятам!	
  	
  

	
  

	
  




105	
  
 

	
  
          Вопросы	
  




106	
  
Олесь	
  Писаренко	
  
Руководитель	
  службы	
  НТ	
  
	
  
doctor@yandex-­‐team.ru	
  

twiier:	
  @doctornkz	
  

	
  

More Related Content

What's hot

Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
 
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...Ontico
 
Нагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховНагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховИлья Кожухов
 
Разгоняем 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
 
Тестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumТестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumSQALab
 
postgresql monitoring by okmeter.io
postgresql monitoring by okmeter.iopostgresql monitoring by okmeter.io
postgresql monitoring by okmeter.ioNikolay Sivko
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на productionNikolay Sivko
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Ontico
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...Ontico
 
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Илья Евлампиев - Grinder
Илья Евлампиев - GrinderИлья Евлампиев - Grinder
Илья Евлампиев - GrinderAlexey Chumagin
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Ontico
 
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...Ontico
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...odnoklassniki.ru
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Ontico
 

What's hot (19)

Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
 
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...
 
Нагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховНагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter Кожухов
 
Разгоняем 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.)
 
Тестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumТестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и Selenium
 
postgresql monitoring by okmeter.io
postgresql monitoring by okmeter.iopostgresql monitoring by okmeter.io
postgresql monitoring by okmeter.io
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
 
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт... Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
 
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Илья Евлампиев - Grinder
Илья Евлампиев - GrinderИлья Евлампиев - Grinder
Илья Евлампиев - Grinder
 
RootConf 2015
RootConf 2015RootConf 2015
RootConf 2015
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
 
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
 

Similar to Олесь Писаренко "Открываем Яндекс.Танк"

Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоAvitoTech
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годAnton Turetsky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годBadoo Development
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Ruby Meditation
 
PaaS, выделенные сервера, облако и снова PaaS
PaaS, выделенные  сервера, облако и снова PaaSPaaS, выделенные  сервера, облако и снова PaaS
PaaS, выделенные сервера, облако и снова PaaSAlexey Vakhov
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Platonov Sergey
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программированиеPython Meetup
 
Профайлинг.
Профайлинг. Профайлинг.
Профайлинг. Nikita Romanov
 
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Ivan Tsyganov
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияBadoo Development
 

Similar to Олесь Писаренко "Открываем Яндекс.Танк" (20)

Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений Фомченко
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
 
PaaS, выделенные сервера, облако и снова PaaS
PaaS, выделенные  сервера, облако и снова PaaSPaaS, выделенные  сервера, облако и снова PaaS
PaaS, выделенные сервера, облако и снова PaaS
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программирование
 
Профайлинг.
Профайлинг. Профайлинг.
Профайлинг.
 
PowerShell
PowerShellPowerShell
PowerShell
 
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрация
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Олесь Писаренко "Открываем Яндекс.Танк"

  • 1. Яндекс.Танк   Олесь  Писаренко     Руководитель службы нагрузочного тестирования     Я.Субботник,  Москва,  28  июля,  2012  года  
  • 4. Содержание   •  Яндекс.Танк   •  Особенности       4  
  • 5. Содержание   •  Яндекс.Танк   •  Особенности   •  Простые  примеры       5  
  • 6. Содержание   •  Яндекс.Танк   •  Особенности   •  Простые  примеры   •  Немного  хардкора       6  
  • 7. Содержание   •  Яндекс.Танк   •  Особенности   •  Простые  примеры   •  Немного  хардкора   •  Ссылки     7  
  • 9. Жаргонарий      Танк  —  источник  нагрузки   l    9  
  • 10. Жаргонарий      Танк  —  источник  нагрузки   l     Мишень  —  объект  нагрузки   l    10  
  • 11. Жаргонарий      Танк  —  источник  нагрузки   l     Мишень  —  объект  нагрузки   l  l   Стрельба  —  тест     11  
  • 12. Жаргонарий      Танк  —  источник  нагрузки   l     Мишень  —  объект  нагрузки   l  l   Стрельба  —  тест   l   Патрон  —  запрос  к  объекту  нагрузки     12  
  • 13. Жаргонарий      Танк  —  источник  нагрузки   l     Мишень  —  объект  нагрузки   l   Стрельба  —  тест   l   Патрон  —  запрос  к  объекту  нагрузки   l   Лента  —  последовательность  запросов   l  13  
  • 15. Яндекс.Танк      Производительный   l    15  
  • 16. Яндекс.Танк      Производительный   l     Простой   l    16  
  • 17. Яндекс.Танк      Производительный   l     Простой   l   Opensource  (as  is)   l  17  
  • 18. Движок  Яндекс.Танка   Phantom:       Высокопроизводительный  вебсервер,  прокси,   клиент.     Разработчик  -­‐  Евгений  Мамчиц   hips://github.com/mamchits/phantom     18  
  • 19. Немного  истории   Подробнее  здесь:     «Вебсервер  Phantom»     докладчик  Влад  Селиверстов   hip://clck.ru/1Knyv     19  
  • 20. Немного  истории   О  нашем  инструменте:     «Танки  в  Лунапарке»     докладчик  Андрей  Кузьмичев   hip://clck.ru/1Ko-­‐z     20  
  • 22. Особенности   l   Консольный     22  
  • 23. Особенности   l   Консольный   l   Linux-­‐only     23  
  • 24. Особенности   l   Консольный   l   Linux-­‐only   l   Hit-­‐based     24  
  • 25. Особенности    Консольный   l   Linux-­‐only   l   Hit-­‐based   l   Модульный   l  25  
  • 26. Что  умеет     26  
  • 27. Что  умеет     l   HTTP/HTTPS/Stateless     27  
  • 28. Что  умеет     l   HTTP/HTTPS/Stateless   l   IPv4/IPv6     28  
  • 29. Что  умеет      HTTP/HTTPS/Stateless   l   IPv4/IPv6   l   До  100к  запросов/cек     l  29  
  • 30. Что  умеет     l   HTTP/HTTPS/Stateless   l   IPv4/IPv6   l   До  100к  запросов/cек     l   «Раскладка»  времён     30  
  • 31. Что  умеет      HTTP/HTTPS/Stateless   l   IPv4/IPv6   l   До  100к  запросов/cек     l   «Раскладка»  времён   l   Многое  другое   l  31  
  • 32. Сразу  в  лоб   Графиков  не  будет   32  
  • 34. Установка   Требования:        Ubuntu  Server/Desktop   l   32/64bit   l   Lucid/Precise   l  34  
  • 35. Установка     Добавляем необходимые репозитории   # Ubuntu Lucid deb http://mirror.yandex.ru/mirrors/tank common main deb http://mirror.yandex.ru/mirrors/tank lucid main   # Ubuntu Precise deb http://mirror.yandex.ru/mirrors/tank common main deb http://mirror.yandex.ru/mirrors/tank precise main 35  
  • 36. Установка     $ sudo apt-get update   $ sudo apt-get install yandex-load-tank-base   $ dpkg -l | grep tank ii yandex-load-tank-base 36  
  • 37. Подготовка     $ lunapark ==== Welcome to Lunapark ====   Usage: lunapark AMMO-FILE [OPTIONS]   Try `lunapark --help' for more information. $ nano load.conf 37  
  • 38. Пример  1   Тестирование  HTTP  сервиса  постоянной  нагрузкой  в   10  рпс.     Запрашиваем  корневую  страницу.         38  
  • 39. Пример  1   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = / 39  
  • 40. Пример  1   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = / 40  
  • 41. Пример  1   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = / 41  
  • 42. Пример  1   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: uri = / 42  
  • 43. Пример  1   Запускаем стрельбу $ lunapark ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo_20120725-180420.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: uri Ammo Generating: 100% lunapark: starting preproc... Done 43  
  • 52. Пример  2   Тестирование  HTTP  сервиса  линейно-­‐возрастающей   нагрузкой  до  100  рпс.     Запрашиваем  корневую  страницу.     Используем  IPv6  +  SSL       52  
  • 53. Пример  2   $cat load.conf # Tank Config File address=0:0:0:0:0:0:0:1:443 # load = line (1,100,10m) #Схема нагрузки ssl=1 # включение режима SSL # Перечисление заголовков и GET запросов: uri = / 53  
  • 55. Пример  3   Тестирование  HTTP  сервиса  ступенчато-­‐ возрастающей  нагрузкой  до  100  рпс.     Запрашиваем  корневую  страницу.     Используем  IPv6  +  SSL       55  
  • 56. Пример  3   $cat load.conf # Tank Config File address=0:0:0:0:0:0:0:1:443 # load = step (1,100,10,1m) #Схема нагрузки ssl=1 # включение режима SSL # Перечисление заголовков и GET запросов: uri = / 56  
  • 58. Пример  4   Тестирование  HTTP  сервиса  c  прогревом,  линейно-­‐ ступенчато-­‐возрастающей  нагрузкой  до  30  рпс  с   одним  «спайком»  до  100  рпс  и  плавным  снижением   нагрузки.     Запрашиваем  корневую  страницу.     Используем  IPv6  +  SSL       58  
  • 59. Пример  4   $cat load.conf # Tank Config File address=0:0:0:0:0:0:0:1:443 # load = const(1,1m), line(1,10,1m), step(10,30,10,1m) load = const(30,1m), const(100,1), line(100,1,1m) ssl=1 # включение режима SSL # Перечисление заголовков и GET запросов: uri = / 59  
  • 61. Пример  5   Тестирование  HTTP  сервиса  постоянной  нагрузкой   10  рпс.     Запрашиваем  несколько  страниц  с   определенными  заголовками.     Используем  IPv6  +  SSL       61  
  • 62. Пример  5   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy 62  
  • 63. Пример  5   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy 63  
  • 64. Пример  5   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy 64  
  • 65. Пример  5   $cat load.conf # Tank Config File address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = example.com uri = / uri = /buy 65  
  • 67. Да  сколько  можно!?       Потерпите,  мы  уже  прошли  половину   67  
  • 69. Немного  хардкора     Что делать в сложных случаях ?   69  
  • 70. Немного  хардкора     Как выглядит обычный HTTP запрос?   70  
  • 71. Немного  хардкора   Request-Line     Request Headers Data (OPTIONAL) 71  
  • 72. Немного  хардкора   POST / HTTP/1.1     Host: example.com Content-Length:3 Connection: Close uho 72  
  • 73. Немного  хардкора   Запрос для Яндекс.Танка будет таким:  80 POST / HTTP/1.1  Host: example.com Content-Length:3 Connection: Close uho 73  
  • 74. Немного  хардкора   Запрос для Яндекс.Танка будет таким:  80 POST / HTTP/1.1  Host: example.com Content-Length:3 Connection: Close uho 74  
  • 75. Немного  хардкора   Запрос для Яндекс.Танка будет таким:  80 POST / HTTP/1.1  Host: example.com Content-Length:3 Connection: Close uho Сохраним этот запрос в файл ammo.txt 75  
  • 76. Немного  хардкора   Упростим load.conf   $cat load.conf # Tank Config File   address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = target.yandex.net uri = / uri = /buy 76  
  • 77. Немного  хардкора   Упростим load.conf   $cat load.conf # Tank Config File   address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки # Перечисление заголовков и GET запросов: header_http = 1.1 header_connection = close header_host = target.yandex.net uri = / uri = /buy 77  
  • 78. Немного  хардкора   Упростим load.conf   $cat load.conf # Tank Config File   address=127.0.0.1:80 #Адрес (IP only!) и порт стенда load = const (10,10m) #Схема нагрузки 78  
  • 79. Немного  хардкора   Запускаем стрельбу $ lunapark ammo.txt ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: request Ammo Generating: 100% lunapark: starting preproc... Done 79  
  • 80. Немного  хардкора   Запускаем стрельбу $ lunapark ammo.txt ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: request Ammo Generating: 100% lunapark: starting preproc... Done 80  
  • 81. Немного  хардкора   Ура! Стреляет! 81  
  • 82. Немного  хардкора   А теперь склеим несколько запросов и запишем их в файл ammo.txt друг за другом 82  
  • 83. Немного  хардкора   80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close uho + 80 POST / HTTP/1.1 = Host: example.com Content-Length:3 Connection: Close nos + 80 POST / HTTP/1.1 Host: example.com Content-Length:3 Connection: Close rot 83  
  • 84. Немного  хардкора   Мы получили «ленту» запросов 84  
  • 85. Немного  хардкора   Мы получили «ленту» запросов 85  
  • 86. Немного  хардкора   Запуск аналогичен одиночному запросу: $ lunapark ammo.txt ==== Welcome to Lunapark ==== doctor-desktop.yandex.ru (doctor) phantom=0.14.0 yandex-load-tank=N/A ammo=/home/doctor/10/ammo.txt ==== Stepper ==== Creating cases tree: 100% Case: 3. Ammo type: request Ammo Generating: 100% lunapark: starting preproc... Done 86  
  • 89. Еще  немного...   Все результаты теста сбрасываются в файл phout.txt $ head phout* ==> phout_20120725-172045.txt <== 1343222446.181 front_page 1533 273 29 1002 229 1238 18 297 0 200 1343222446.288 front_page 1261 681 14 519 47 1144 18 297 0 200 1343222446.388 front_page 926 365 18 506 37 830 18 297 0 200 1343222446.488 front_page 883 242 11 600 30 811 18 297 0 200 1343222446.588 front_page 521 214 9 267 31 437 18 297 0 200 1343222446.688 front_page 877 228 15 524 110 720 18 297 0 200 1343222446.788 front_page 1240 677 15 506 42 1145 18 297 0 200 1343222446.888 front_page 1102 319 16 722 45 1006 18 297 0 200 1343222446.988 front_page 857 246 14 552 45 757 18 297 0 200 89  
  • 90. Еще  немного...   phout.txt - основное хранилище не агрегированных данных 90  
  • 91. Еще  немного...   Формат phout.txt хорошо описан в документации 91  
  • 92. Еще  немного...   Формат phout.txt хорошо описан в документации Зачем? 92  
  • 93. Затем,  что...   Excel loadosophia gnuplot JS phout.txt DB API ??? 93  
  • 94. А  могу  ли  я...?  Да!   THREAD TEST SPIKE TEST CUSTOM TIMINGS WEBDAV GZIP POST RECOVERY TEST POP3 REQ FILE CGI PARAM GET SMTP URLENCODE LOOP MULTIPART COOKIE TAGS HEADERS 94  
  • 95. А  могу  ли  я...?  Да!   THREAD TEST SPIKE TEST CUSTOM TIMINGS WEBDAV README.TXT GZIP POST RECOVERY TEST POP3 REQ FILE CGI PARAM GET SMTP URLENCODE LOOP MULTIPART COOKIE TAGS HEADERS 95  
  • 98. Phantom   http://clck.ru/1KRej     Евгений Мамчиц 98  
  • 99. Phantom  ARM     http://clck.ru/1KRhJ     Дмитрий Билунов 99  
  • 100. Phantom  Docs     http://clck.ru/1KRhX     Григорий Комиссаров 100  
  • 101. Firebat  console     http://clck.ru/1KRhp     Григорий Комиссаров 101  
  • 102. Loadosophia     http://clck.ru/1KodD     Андрей Похилько 102  
  • 106.     Вопросы   106  
  • 107. Олесь  Писаренко   Руководитель  службы  НТ     doctor@yandex-­‐team.ru   twiier:  @doctornkz