tutorial.rst formatting

This commit is contained in:
Alexey Lavrenuke 2012-10-15 16:17:35 +04:00
parent 47bed0590b
commit 11b56d43f1
2 changed files with 311 additions and 96 deletions

View File

@ -222,6 +222,7 @@ Host: xxxxxxxxx.dev.example.com
Keep-Alive: 300
Content-Type: multipart/form-data; boundary=AGHTUNG
Content-Length:334
Connection: Close
--AGHTUNG
Content-Disposition: form-data; name="host"
@ -237,7 +238,6 @@ Content-Disposition: form-data; name="wsw-fields"
<wsw-fields><wsw-field name="moderate-code"><wsw-value>disable</wsw-value></wsw-field></wsw-fields>
--AGHTUNG--
Connection: Close
```
### Run Test!
@ -275,8 +275,8 @@ GET /abra HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
78 unknown
GET /ab ra HTTP/1.0
75 unknown
GET /ab HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
```
@ -379,8 +379,9 @@ Phout example:
**NOTE:** as Yandex.Tank uses phantom as an http load engine and this file is written by phantom, it contents depends on phantom version installed on your Yandex.Tank system.
### Graph and statistics
Use your favorite stats packet, R, for example. Internal stat and graphing tool is under construction.
Use included charting tool that runs as a webservice on localhost
OR
use your favorite stats packet, R, for example.
### Custom timings
You can set custom timings in ```load.conf``` with ```time_periods``` parameter like this:
```
@ -421,7 +422,7 @@ load.conf example:
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const(10, 10m) #load scheme
instances=10
tank_type=2 # Parameter Nonna is commented for compatibility reasons.
tank_type=2
```
### Gatling
If server with Yandex.Tank have several IPs, they may be used to avoid outcome port shortage. Use ```gatling_ip``` parameter for that.

View File

@ -8,104 +8,193 @@ First Step
~~~~~~~~~~
Create a file on a server with Yandex.Tank: **load.conf**
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=line(1, 100, 10m) #load scheme``
Yandex.Tank have 3 primitives for describing load scheme: 1.
``step (a,b,step,dur)`` makes stepped load, where a,b are start/end load
values, step - increment value, dur - step duration. 2.
``line (a,b,dur)`` makes linear load, where a,b are start/end load, dur
- the time for linear load increase from a to b. 3. ``const (load,dur)``
makes constant load. load - rps amount, dur - load duration. You can set
.. code-block:: bash
[phantom]
address=23.23.23.23:80 # Target's address and port.
rps_schedule=line(1, 100, 10m) # load scheme
Yandex.Tank have 3 primitives for describing load scheme:
1. ``step (a,b,step,dur)`` makes stepped load, where a,b are start/end load
values, step - increment value, dur - step duration.
2. ``line (a,b,dur)`` makes linear load, where ``a,b`` are start/end load, ``dur``
- the time for linear load increase from a to b.
3. ``const (load,dur)`` makes constant load. ``load`` - rps amount, ``dur`` - load duration. You can set
fractional load like this: ``const (a/b,dur)`` -- a/b rps, where a >= 0,
b > 0. Note: ``const(0, 10)`` - 0 rps for 10 seconds, in fact 10s pause
in a test.
``step`` and ``line`` could be used with increasing and decreasing
intensity: ``step(25, 5, 5, 60)`` - stepped load from 25 to 5 rps, with
intensity:
* ``step(25, 5, 5, 60)`` - stepped load from 25 to 5 rps, with
5 rps steps, step duration 60s. ``step(5, 25, 5, 60)`` - stepped load
from 5 to 25 rps, with 5 rps steps, step duration 60s
``line(100, 1, 10m)`` - linear load from 100 to 1 rps, duration - 10
* ``line(100, 1, 10m)`` - linear load from 100 to 1 rps, duration - 10
minutes ``line(1, 100, 10m)`` - linear load from 1 to 100 rps, duration
- 10 minutes
Time duration could be defined in seconds, minutes (m) and hours (h).
For example: ``27h103m645``
For a test with constant load at 10rps for 10 minutes, load.conf should
For a test with constant load at 10rps for 10 minutes, ``load.conf`` should
have next lines:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const(10, 10m) #load scheme``
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port.
rps_schedule=const(10, 10m) #load scheme
Voilà, Yandex.Tank setup is done.
Preparing requests
~~~~~~~~~~~~~~~~~~
There are two ways to set up requests. #### URI-style URIs listed in
load.conf or in a separate file.
There are two ways to set up requests: URI-style and request-style.
URIs in load.conf
'''''''''''''''''
URI-style, URIs in load.conf
''''''''''''''''''''''''''''
Update configuration file with HTTP headers and URIs:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const(10, 10m) #load scheme# Headers and URIs for GET requests header_http = 1.1 header = [Host: www.target.example.com] header = [Connection: close] uris = / /buy /sdfg?sdf=rwerf /sdfbv/swdfvs/ssfsf``
Parameters ``header`` define headers values. ``uri`` contains uri, which
.. code-block:: bash
[phantom]
address=23.23.23.23:80 # Target's address and port.
rps_schedule=const(10, 10m) # load scheme
# Headers and URIs for GET requests
header_http = 1.1
headers = [Host: www.target.example.com]
[Connection: close]
uris = /
/buy
/sdfg?sdf=rwerf
/sdfbv/swdfvs/ssfsf
Parameter ``headers`` define headers values. ``uri`` contains uri, which
should be used for requests generation.
URIs in file
''''''''''''
URI-style, URIs in file
'''''''''''''''''''''''
Create a file with declared requests: **ammo.txt**
``[Connection: close] [Host: target.example.com] [Cookies: None] /?drg / /buy /buy/?rt=0&station_to=7&station_from=9``
.. code-block:: bash
[Connection: close]
[Host: target.example.com]
[Cookies: None]
/?drg
/
/buy
/buy/?rt=0&station_to=7&station_from=9
File begins with optional lines [...], that contain headers which will
be added to every request. After that section there is a list of URIs.
Every URI must begin from a new line, with leading '/'. ####
Request-style Full requests listed in a separate file. For more complex
Every URI must begin from a new line, with leading '/'.
Request-style
'''''''''''''
Full requests listed in a separate file. For more complex
requests, like POST, you'll have to create a special file. File format
is:
``[size_of_request] [tag]\n [body_request] \r\n [size_of_request2] [tag]\n [body_request2] \r\n``
where size\_of\_request request size in bytes. '' symbols after
body\_requests are ignored and not sent anywhere, but it is required to
include it in a file after each request. '' is also required. **sample
GET requests** \`\`\` 73 good GET / HTTP/1.0 Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
77 bad GET /abra HTTP/1.0 Host: xxx.tanks.example.com User-Agent: xxx
(shell 1)
.. code-block:: bash
78 unknown GET /ab ra HTTP/1.0 Host: xxx.tanks.example.com User-Agent:
xxx (shell 1) ``**sample POST requests**`` 904 POST /upload/2 HTTP/1.0
Content-Length: 801 Host: xxxxxxxxx.dev.example.com User-Agent: xxx
(shell 1)
[size_of_request] [tag]\n
[request_headers]
[body_of_request] \r\n
[size_of_request2] [tag2]\n
[request2_headers]
[body_of_request2] \r\n
\ :sup:`.`\ ........W.j\ :sup:`1`\ .\ :sup:`.`\ .²..\ :sup:`\ :sup:`.i.`\ B.P..-!(.l/Y..V`\ .
...L?...S'NR.\ :sup:`\ :sup:`vm...3Gg@s...d'.^.5N.:math:`NF^,.Z^.aTE^. ._.[..k#L^ƨ`\RE.J.<.!,.q5.F^՚iΔĬq..^6..P..тH.`..i2 .".uuzs^^F2...Rh.&.U.^^..J.P@.A......x..lǝy^?.u.p{4..g...m.,..R^.^.^......].^^.^J...p.ifTF0<.s.9V.o5<..%!6ļS.ƐǢ..㱋....C^&.....^.^y...v]^YT.1.#K.ibc...^.26... ..7. b.`\ ...j6.٨f...W.R7.`\ 1.3....K\`%.&`\ ..d..{{
l0..\ :sup:`..`\ X.g.\ :sup:`.r.(!.`\ \ :sup:`...4.1.:math:`\ .%.8`\ (.n&..`\ \ :sup:`q.,.Q..`\ .D\ :sup:`.].`\ .R9.kE.^.:math:`^.I..<..B^..^.h^^C.^E.|....3o^.@..Z.^.s.`\ [v.
527 POST /upload/3 HTTP/1.0 Content-Length: 424 Host:
xxxxxxxxx.dev.example.com User-Agent: xxx (shell 1)
\ :sup:`.`\ ........QMO.0\ :sup:`.++`\ zJw.ر\ :sup:`$`\ .\ :sup:`Ѣ.`\ V.J....vM.8r&.T+...{@pk%~C.G../z顲\ :sup:`.7....l...-.`\ W"cR.....
.&\ :sup:`?u.U`\ \ :sup:`.`\ .....{\ :sup:`.`\ ..8.\ :sup:`.`\ .I.EĂ.p...'\ :sup:`.3.Tq..@R8....RAiBU..1.Bd\*".7+.
.Ol.j=`\ .3..n....wp..,Wg.y\ :sup:`.T..~`\ ..
``**sample POST multipart:**`` 533 POST /updateShopStatus? HTTP/1.0
User-Agent: xxx/1.2.3 Host: xxxxxxxxx.dev.example.com Keep-Alive: 300
Content-Type: multipart/form-data; boundary=AGHTUNG Content-Length:334
where ``size_of_request`` request size in bytes. '\r\n' symbols after
``body`` are ignored and not sent anywhere, but it is required to
include them in a file after each request. '\r' is also required.
--AGHTUNG Content-Disposition: form-data; name="host"
**sample GET requests (null body)**
load-test-shop-updatestatus.ru --AGHTUNG Content-Disposition: form-data;
name="user\_id"
.. code-block:: bash
1 --AGHTUNG Content-Disposition: form-data; name="wsw-fields"
73 good
GET / HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
disable --AGHTUNG--
77 bad
GET /abra HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
78 unknown
GET /ab ra HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
**sample POST requests**
.. code-block:: bash
904
POST /upload/2 HTTP/1.0
Content-Length: 801
Host: xxxxxxxxx.dev.example.com
User-Agent: xxx (shell 1)
^.^........W.j^1^.^.^.²..^^.i.^B.P..-!(.l/Y..V^. ...L?...S'NR.^^vm...3Gg@s...d'.\^.5N.$NF^,.Z^.aTE^.
._.[..k#L^ƨ`\RE.J.<.!,.q5.F^՚iΔĬq..^6..P..тH.`..i2
.".uuzs^^F2...Rh.&.U.^^..J.P@.A......x..lǝy^?.u.p{4..g...m.,..R^.^.^......].^^.^J...p.ifTF0<.s.9V.o5<..%!6ļS.ƐǢ..㱋....C^&.....^.^y...v]^YT.1.#K.ibc...^.26... ..7.
b.$...j6.٨f...W.R7.^1.3....K`%.&^..d..{{ l0..^\..^X.g.^.r.(!.^^...4.1.$\ .%.8$(.n&..^^q.,.Q..^.D^.].^.R9.kE.^.$^.I..<..B^..^.h^^C.^E.|....3o^.@..Z.^.s.$[v.
527
POST /upload/3 HTTP/1.0
Content-Length: 424
Host: xxxxxxxxx.dev.example.com
User-Agent: xxx (shell 1)
^.^........QMO.0^.++^zJw.ر^$^.^Ѣ.^V.J....vM.8r&.T+...{@pk%~C.G../z顲^.7....l...-.^W"cR..... .&^?u.U^^.^.....{^.^..8.^.^.I.EĂ.p...'^.3.Tq..@R8....RAiBU..1.Bd*".7+.
.Ol.j=^.3..n....wp..,Wg.y^.T..~^..
**sample POST multipart:**
.. code-block:: bash
533
POST /updateShopStatus? HTTP/1.0
User-Agent: xxx/1.2.3
Host: xxxxxxxxx.dev.example.com
Keep-Alive: 300
Content-Type: multipart/form-data; boundary=AGHTUNG
Content-Length:334
Connection: Close
--AGHTUNG
Content-Disposition: form-data; name="host"
load-test-shop-updatestatus.ru
--AGHTUNG
Content-Disposition: form-data; name="user_id"
1
--AGHTUNG
Content-Disposition: form-data; name="wsw-fields"
<wsw-fields><wsw-field name="moderate-code"><wsw-value>disable</wsw-value></wsw-field></wsw-fields>
--AGHTUNG--
Connection: Close \`\`\`
Run Test!
~~~~~~~~~
1. Request specs in load.conf ``yandex-tank``
1. Request specs in load.conf -- just run as ``yandex-tank``
2. Request specs in ammo.txt ``yandex-tank ammo.txt``
2. Request specs in ammo.txt -- run as ``yandex-tank ammo.txt``
Yandex.Tank detects requests format and generates ultimate requests
versions.
@ -126,33 +215,64 @@ Tags
~~~~
Requests could be grouped and marked by some tag. Example of file with
requests and tags: \`\`\` 73 good GET / HTTP/1.0 Host:
xxx.tanks.example.com User-Agent: xxx (shell 1)
requests and tags:
77 bad GET /abra HTTP/1.0 Host: xxx.tanks.example.com User-Agent: xxx
(shell 1)
.. code-block:: bash
78 unknown GET /ab ra HTTP/1.0 Host: xxx.tanks.example.com User-Agent:
xxx (shell 1) \`\`\` 'good', 'bad' and 'unknown' here are the tags.
73 good
GET / HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
77 bad
GET /abra HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
75 unknown
GET /ab HTTP/1.0
Host: xxx.tanks.example.com
User-Agent: xxx (shell 1)
``good``, ``bad`` and ``unknown`` here are the tags.
**RESTRICTION: latin letters allowed only.**
SSL
~~~
To activate SSL add 'ssl = 1' to load.conf. Don't forget to change port
To activate SSL add ``ssl = 1`` to ``load.conf``. Don't forget to change port
number to appropriate value. Now, our basic config looks like that:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const (10,10m) #Load scheme ssl=1``
### Autostop Autostop is an ability to automatically halt test execution
if some conditions are reached. #### HTTP and Net codes conditions There
is an option to define specific codes (404,503,100) as well as code
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const (10,10m) #Load scheme
ssl=1
Autostop
~~~~~~~~
Autostop is an ability to automatically halt test execution
if some conditions are reached.
HTTP and Net codes conditions
'''''''''''''''''''''''''''''
There is an option to define specific codes (404,503,100) as well as code
groups (3xx, 5xx, xx). Also you can define relative threshold (percent
from the whole amount of answer per second) or absolute (amount of
answers with specified code per second). Examples:
``autostop = http(4xx,25%,10)`` stop test, if amount of 4xx http codes
* ``autostop = http(4xx,25%,10)`` stop test, if amount of 4xx http codes
in every second of last 10s period exceeds 25% of answers (relative
threshold) ``autostop = net(101,25,10)`` stop test, if amount of 101
threshold)
* ``autostop = net(101,25,10)`` stop test, if amount of 101
net-codes in every second of last 10s period is more than 25 (absolute
threshold) ``autostop = net(xx,25,10)`` stop test, if amount of
threshold)
* ``autostop = net(xx,25,10)`` stop test, if amount of
non-zero net-codes in every second of last 10s period is more than 25
(absolute threshold)
@ -164,31 +284,69 @@ time exceeds 1500ms
So, if we want to stop test when all answers in 1 second period are 5xx
plus some network and timing factors - add autostop line to load.conf:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const(10, 10m) #load scheme [autostop] autostop=time(1,10) http(5xx,100%,1s) net(xx,1,30)``
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const(10, 10m) #load scheme
[autostop]
autostop=time(1,10)
http(5xx,100%,1s)
net(xx,1,30)
Logging
~~~~~~~
Looking into target's answers is quite useful in debugging. For doing
that add 'writelog = 1' to load.conf. **ATTENTION: Writing answers on
that add ``writelog = 1`` to ``load.conf``.
**ATTENTION: Writing answers on
high load leads to intensive disk i/o usage and can affect test
accuracy.** Log format: ``<metrics> <body_request> <body_answer>``
accuracy.**
Log format:
.. code-block:: bash
<metrics>
<body_request>
<body_answer>
Where metrics are:
``size_in size_out response_time(interval_real) interval_event net_code``
(request size, answer size, response time, time to wait for response
from the server, answer network code) Example: \`\`\` user@tank:~$ head
answ\_\*.txt 553 572 8056 8043 0 GET /create-issue HTTP/1.1 Host:
target.yandex.net User-Agent: tank Accept: */* Connection: close
from the server, answer network code)
HTTP/1.1 200 OK Content-Type: application/javascript;charset=UTF-8
\`\`\`
Example:
For ``load.conf`` like this: \`\`\` [phantom] address=23.23.23.23:80
#Target's address and port . rps\_schedule=const(10, 10m) #load scheme
writelog=1 [autostop] autostop=time(1,10) http(5xx,100%,1s) net(xx,1,30)
.. code-block:: bash
\`\`\`
user@tank:~$ head answ_*.txt
553 572 8056 8043 0
GET /create-issue HTTP/1.1
Host: target.yandex.net
User-Agent: tank
Accept: */*
Connection: close
HTTP/1.1 200 OK
Content-Type: application/javascript;charset=UTF-8
For ``load.conf`` like this:
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const(10, 10m) #load scheme
writelog=1
[autostop]
autostop=time(1,10)
http(5xx,100%,1s)
net(xx,1,30)
Results in phout
~~~~~~~~~~~~~~~~
@ -198,7 +356,23 @@ analysis (Excel/gnuplot/etc) It has following fields:
``time, tag, interval_real, connect_time, send_time, latency, receive_time, interval_event, size_out, size_in, net_code proto_code``
Phout example:
``1326453006.582 1510 934 52 384 140 1249 37 478 0 404 1326453006.582 others 1301 674 58 499 70 1116 37 478 0 404 1326453006.587 heavy 377 76 33 178 90 180 37 478 0 404 1326453006.587 294 47 27 146 74 147 37 478 0 404 1326453006.588 345 75 29 166 75 169 37 478 0 404 1326453006.590 276 72 28 119 57 121 53 476 0 404 1326453006.593 255 62 27 131 35 134 37 478 0 404 1326453006.594 304 50 30 147 77 149 37 478 0 404 1326453006.596 317 53 33 158 73 161 37 478 0 404 1326453006.598 257 58 32 106 61 110 37 478 0 404 1326453006.602 315 59 27 160 69 161 37 478 0 404 1326453006.603 256 59 33 107 57 110 53 476 0 404 1326453006.605 241 53 26 130 32 131 37 478 0 404``
.. code-block:: bash
1326453006.582 1510 934 52 384 140 1249 37 478 0 404
1326453006.582 others 1301 674 58 499 70 1116 37 478 0 404
1326453006.587 heavy 377 76 33 178 90 180 37 478 0 404
1326453006.587 294 47 27 146 74 147 37 478 0 404
1326453006.588 345 75 29 166 75 169 37 478 0 404
1326453006.590 276 72 28 119 57 121 53 476 0 404
1326453006.593 255 62 27 131 35 134 37 478 0 404
1326453006.594 304 50 30 147 77 149 37 478 0 404
1326453006.596 317 53 33 158 73 161 37 478 0 404
1326453006.598 257 58 32 106 61 110 37 478 0 404
1326453006.602 315 59 27 160 69 161 37 478 0 404
1326453006.603 256 59 33 107 57 110 53 476 0 404
1326453006.605 241 53 26 130 32 131 37 478 0 404
**NOTE:** as Yandex.Tank uses phantom as an http load engine and this
file is written by phantom, it contents depends on phantom version
installed on your Yandex.Tank system.
@ -206,22 +380,36 @@ installed on your Yandex.Tank system.
Graph and statistics
~~~~~~~~~~~~~~~~~~~~
Use your favorite stats packet, R, for example. Internal stat and
graphing tool is under construction.
Use included charting tool that runs as a webservice on localhost
OR
use your favorite stats packet, R, for example.
Custom timings
~~~~~~~~~~~~~~
You can set custom timings in ``load.conf`` with ``time_periods``
parameter like this:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const(10, 10m) #load scheme [aggregator] time_periods = 10 45 50 100 150 300 500 1s 1500 2s 3s 10s # the last value - 10s is considered as connect timeout.``
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const(10, 10m) #load scheme
[aggregator]
time_periods = 10 45 50 100 150 300 500 1s 1500 2s 3s 10s # the last value - 10s is considered as connect timeout.
Thread limit
~~~~~~~~~~~~
``instances=N`` in ``load.conf`` limits number of simultanious
connections (threads). Test with 10 threads:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const(10, 10m) #load scheme instances=10``
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const(10, 10m) #load scheme
instances=10
Dynamic thread limit
~~~~~~~~~~~~~~~~~~~~
@ -231,7 +419,13 @@ active instances schedule will be performed if load scheme is not
defined. Bear in mind that active instances number cannot be decreased
and final number of them must be equal to ``instances`` parameter value.
load.conf example:
``[phantom] address=23.23.23.23:80 #Target's address and port . instances_schedule = line(1,10,10m) #load = const (10,10m) #Load scheme is excluded from this load.conf as we used instances_schedule parameter``
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
instances_schedule = line(1,10,10m)
#load = const (10,10m) #Load scheme is excluded from this load.conf as we used instances_schedule parameter
Custom stateless protocol
~~~~~~~~~~~~~~~~~~~~~~~~~
@ -239,11 +433,31 @@ Custom stateless protocol
In necessity of testing stateless HTTP-like protocol, Yandex.Tank's HTTP
parser could be switched off, providing ability to generate load with
any data, receiving any answer in return. To do that add
``tank_type = 2`` to ``load.conf``. **Indispensable condition:
Connection close must be initiated by remote side** load.conf example:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const(10, 10m) #load scheme instances=10 tank_type=2 # Parameter Nonna is commented for compatibility reasons.``
### Gatling If server with Yandex.Tank have several IPs, they may be
``tank_type = 2`` to ``load.conf``.
**Indispensable condition: Connection close must be initiated by remote side**
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const(10, 10m) #load scheme
instances=10
tank_type=2
Gatling
~~~~~~~
If server with Yandex.Tank have several IPs, they may be
used to avoid outcome port shortage. Use ``gatling_ip`` parameter for
that. Load.conf:
``[phantom] address=23.23.23.23:80 #Target's address and port . rps_schedule=const(10, 10m) #load scheme instances=10 gatling_ip = 23.23.23.24 23.23.23.26``
.. code-block:: bash
[phantom]
address=23.23.23.23:80 #Target's address and port .
rps_schedule=const(10, 10m) #load scheme
instances=10
gatling_ip = 23.23.23.24 23.23.23.26
**run yandex-tank with -g key**