Yandextank - тест производительности проектов.

Thank you for reading this post, don't forget to subscribe!

Установка Yandex.Tank

При жела­нии, вы може­те уста­но­вить Yandex.Tank из паке­тов, либо запу­стить из исход­ни­ков. Он напи­сан на Python, так что к нему пона­до­бит­ся еще пач­ка моду­лей. Я же пред­по­чи­таю запус­кать его в Docker. Это в разы удоб­нее и быстрее.

Для нача­ла уста­но­ви­те себе докер,  После это­го созда­ем дирек­то­рию для дан­ных тан­ка и кла­дем туда кон­фиг нагру­зоч­но­го теста для сайта.

 

 

token.txt Тек­сто­вый файл с токе­ном от overload.yandex.net.
www.rambler.ru:443 Адрес сер­ве­ра, кото­рый будем тести­ро­вать. При­чем это не адрес сай­та, так как это домен­ное имя про­сто резолвит­ся в ip адрес. Мож­но задать сра­зу в виде ip.
Host: www.rambler.ru Http заго­ло­вок, в кото­ром мы пере­да­ем имя сай­та, кото­рый будем нагружать.
/, /sport/ Урлы сай­та, к кото­рым по оче­ре­ди будем обра­щать­ся. В дан­ном слу­чае это глав­ная стра­ни­ца и стра­ни­ца /sport. Этот спи­сок может быть ука­зан через тек­сто­вый файл. Подроб­но­сти смот­ри­те в документации.
line(5, 30, 1m) Тип нагруз­ки. В дан­ном слу­чае это линей­ный рост запро­сов с 5 до 30 в тече­нии одной минуты.
http(5xx,10%,5s) Усло­вие авто­ма­ти­че­ской оста­нов­ки теста. В дан­ном слу­чае тест завер­шит­ся сам, если в тече­нии 5 секунд будет 10% пяти­со­тых ошибок.

Созда­дим тек­сто­вый файл с токеном:

Не забудь­те запи­сать туда токен. Под­го­тов­ку закон­чи­ли, мож­но при­сту­пать к тестированию.

Запуск нагрузки на сайта с помощью Yandex.Tank

Запус­ка­ем Yandex.Tank:

Ждем окон­ча­ния тести­ро­ва­ния. Если ука­жи­те очень боль­шую нагруз­ку, напри­мер в тыся­чи rps, може­те пове­сить вир­ту­ал­ку или сайт (хе-хе). Вывод рабо­ты тан­ка будет при­мер­но такой.

В нагру­зоч­ном тести­ро­ва­нии сай­та нас в первую оче­редь инте­ре­су­ет вре­мя откли­ка. Где его мож­но оце­нить, я выде­лил на скрин­шо­те. После того, как завер­шит­ся тест, в завер­ша­ю­щем выво­де рабо­ты кон­тей­не­ра будет ссыл­ка на overload, где вы смо­же­те посмот­реть резуль­тат через браузер.

Прой­дя по ней вы смо­же­те более деталь­но изу­чить пове­де­ние сай­та под нагрузкой

Напри­мер, на при­ве­ден­ном резуль­та­те теста чет­ко вид­но, как при при­бли­же­нии к 25-ти одно­вре­мен­ным запро­сам начи­на­ет силь­но рас­ти вре­мя отве­та сер­ве­ра. На 20-ти запро­сах в 90-й пер­цен­тиль попа­да­ли все отве­ты менее 500 мс, а на 25-ти уже даже в 50-й пер­цен­тиль зашли отве­ты 750 мс.

Име­ет смысл похо­дить по вклад­кам, там мно­го дру­гой полез­ной инфор­ма­ции. С помо­щью дан­но­го тести­ро­ва­ния вы смо­же­те доста­точ­но быст­ро опре­де­лить пре­дел про­из­во­ди­тель­но­сти ваше­го железа.

Если хоти­те смо­де­ли­ро­вать более реаль­ную нагруз­ку, а не син­те­ти­че­скую, то хоро­шень­ко пора­бо­тай­те над набо­ром тестов и урлов. Мож­но очень гиб­ко все это настро­ить. Напри­мер, доба­вить post запро­сы, где-то нарас­та­ю­щую нагруз­ку сде­лать, а где-то посто­ян­ную. Все это опи­са­но в доку­мен­та­ции. Там есть силь­но наво­ро­чен­ные примеры.