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

问题描述:

我有2个类似的服务器:16个vCPU,2.4 GHz,Intel Xeon E5-2676v3,64 GiB内存。为什么Yandex Tank不会生成所需的负载

其中第一个生成负载,第二个处理请求。

配置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(平均响应时间为7ms)。

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

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

预期4000,具有〜2700(平均响应时间250毫秒)。

而且,不管多大计划增加RPS,实际遗体内〜2700

有一些建议:1。 Yandex的坦克“理解”,该服务器不能处理这样的负荷,不增加它。 2.服务器无法建立更多连接

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

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

连接数超过2700 =〜200 000. 但是这个数小于load.ini文件中的要求 - const(500000,15s)。

问:为什么Yandex Tand不生成所需的负载?或者可能我错误地理解了结果?

平均服务器的响应时间为250ms,每秒幻像实例每秒可发送大约4个请求。 因此,使用默认数量的幻像实例(1000),物理桶不能发送>〜4000rps - 它没有可用实例,它们都在忙于发送和等待数据。

你可以尝试使用更多的情况下,像它在https://yandextank.readthedocs.io/en/latest/core_and_modules.html#basic-options

+0

提到[phantom]部分instances=10000定义还有一个情节“新语丝”的https://overload.yandex.net/8175#tab=test_data&tags= &plot_groups = extended&machines = 1859&metrics =&slider_start = 1486625970&slider_end = 1486626010&compress_ratio = 1,向您显示已使用坦克实例的数量。密切关注它 - 如果它接近最大值,那么你的坦克已经达到了当前的设置。 – r2d2