Why Yandex Tank do not generate required load

1.1k Views Asked by At

I have 2 similar servers: 16 vCPUs, 2.4 GHz, Intel Xeon E5-2676v3, 64 GiB memory.

First of them generates load,second process requests.

Config load.ini:

[phantom]
address=0.0.0.0 ;target's address(chanched, of course)
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 step by step, start from 1 000 RPS, every 15 add 1 000 RPS, up to 10 000 RPS.

We have:

Expected 1000, have ~1000 (avg response time 7 ms).

Expected 2000, have ~2000 (avg response time 30 ms).

Expected 3000, have ~2700 (avg response time 250 ms).

Expected 4000, have ~2700 (avg response time 250 ms).

Further, no matter how much the planned increased RPS, actual remains within ~ 2700.

Have some suggestions: 1. Yandex Tank "understands", that server can not process such load and do not increase it. 2. Server can not establish more connections

Testing url - /api/test is processed by rails application + nginx as a proxy.

I carried out testing using static files to check second suggestion. Results: https://overload.yandex.net/8175

Number of connections more than 2700 = ~200 000. But this number less than required in load.ini file - const(500000,15s).

Question: why Yandex Tand do not generate required load? or may be I understand results incorrectly?

1

There are 1 best solutions below

1
On

With an average server's response time 250ms, for one second each phantom instance can send about 4 requests per second. So with a default amount of phantom instances (1000) tank physically cannot send > ~4000rps - it has no available instances, all of them are busy sending and waiting data.

You could try to use more instances, like defining in [phantom] section instances=10000 It's mentioned in https://yandextank.readthedocs.io/en/latest/core_and_modules.html#basic-options