【问题标题】:Why Yandex Tank do not generate required load为什么 Yandex Tank 不产生所需的负载
【发布时间】:2017-06-27 03:33:45
【问题描述】:

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

首先产生负载,其次处理请求。

配置加载.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 不生成所需的负载?还是我对结果的理解有误?

【问题讨论】:

    标签: nginx load stress-testing yandex-tank


    【解决方案1】:

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

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

    【讨论】:

    • overload.yandex.net/… 中还有一个情节“线程”,它显示了使用的坦克实例的数量。密切注意它 - 如果它接近最大值,则您的当前设置已达到最大值。
    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多