A
A
Alexey Lushnikov2017-02-09 10:45:38
Yandex
Alexey Lushnikov, 2017-02-09 10:45:38

Why does yandex tank not generate the load specified in the config?

Hey!
There are 2 benches with identical resources: 16 vCPUs, 2.4 GHz, Intel Xeon E5-2676v3, 64 GiB memory.
On one load is generated, on the other it is processed.
load.ini config:

[phantom]
address=0.0.0.0 ;target's address(намеренно изменен, конечно)
port=443 ;target's port
rps_schedule=step(1000,10000,1000,15s) ;load scheme
ssl=1
header_http = 1.1
headers = [Host: api.somehost.io]
  [Content-Type: application/json]
  [Connection: close]
uris = /api/test

Expected:
Load will be generated in steps starting at 1,000 RPS, adding another 1,000 RPS every 15 seconds, up to 10,000 RPS.
We have:
Expect 1000, have ~1000 (average response time 7ms):
cda4a7d9654046ea8fa64c0c4558bed4.png
Expect 2000, have ~2000 (average response time 30ms):
7300696c49934818a6cd2019f6af9b93.png
Expect 3000, have ~2700 (average response time 250ms):
9e4a6103c57b4bbc888387fde6126486.png
Expect 4000, have ~2700 (average response time 250 ms)::
e85636be93a745519518d984534e54d9.png
Response time distribution:
2d70ea0db0224e58b00a857b11cea643.png
Further, no matter how much the planned number of RPS increases, the actual number remains within ~ 2700.
There are assumptions:
1. Yandex Tank "understands" that the server can no longer cope with the load, so further does not increase it.
2. Cannot create more connections to the server (how to check?)
The test url = /api/test is handled by the rails application and proxied by nginx.
Tested on static to test assumption 2 that the server can't create more connections. Results: https://overload.yandex.net/8175
44cdb07400a847f1a50daf4bdb52abc4.png
There are more connections, ~200,000, but again the required const(500000,15s) load was not generated.
Question: why does Yandex Tank not generate the specified load? Or am I misinterpreting the results?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
C
Coffee1, 2017-02-10
@Coffee1

Pay attention, you rested against "Active instances". This is the number of workers that are engaged in "shelling" the object.
You can increase it by adding the instances= option to the config. On older versions of the tank, it was also necessary to clear the cache - all files from the folder, with the exception of configs (if this is not done, the value will remain default - 1000)

X
x67, 2017-02-09
@x67

actual responses means "real / actual responses" Maybe they still answer, but there a timeout of 2 seconds works and this is no longer considered a response?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question