为什么Yandex Tank不会产生所需的负载

时间:2017-02-09 08:17:53

标签: nginx load stress-testing yandex-tank

我有2个类似的服务器:16个vCPU,2.4 GHz,Intel Xeon E5-2676v3,64 GiB内存。

首先生成加载,第二个进程请求。

配置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

预期: 负载将逐步生成,从1 000 RPS开始,每15个加1 000 RPS,最高10 000 RPS。

我们有:

预计1000,有~1000(平均响应时间7毫秒)。

预计2000年,有~2000(平均响应时间30毫秒)。

预计3000,有~2700(平均响应时间250毫秒)。

预计4000,有~2700(平均响应时间250毫秒)。

此外,无论计划增加的RPS多少,实际仍然在~2700之内。

有一些建议: 1. Yandex Tank"理解",该服务器无法处理此类负载而不会增加它。 2.服务器无法建立更多连接

测试url - / api / test由rails application + nginx作为代理处理。

我使用静态文件进行测试以检查第二个建议。结果:https://overload.yandex.net/8175

超过2700 = ~200 000的连接数。 但这个数字少于load.ini文件中所需的数量 - const(500000,15s)。

问题:为什么Yandex Tand不产生所需的负载?或者我可能不正确地理解结果?

1 个答案:

答案 0 :(得分:0)

平均服务器的响应时间为250毫秒,每个幻像实例每秒发送大约4个请求一秒钟。 因此,使用默认数量的幻像实例(1000)坦克实际上无法发送> ~4000rps - 它没有可用的实例,所有实例都在忙着发送和等待数据。

您可以尝试使用更多实例,例如在[space]YourCountry部分[phantom]中定义https://yandextank.readthedocs.io/en/latest/core_and_modules.html#basic-options