2017-02-09 6 views
0

У меня есть 2 похожих сервера: 16 vCPU, 2,4 ГГц, Intel Xeon E5-2676v3, 64 гигабайта памяти.Почему Yandex Tank не генерирует требуемую нагрузку

Первый из них создает нагрузку, второй запрос процесса.

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 

Ожидаемое: нагрузки будет сгенерирован шаг за шагом, начиная с 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. Яндекс Tank «понимает», что сервер не может обработать такую ​​нагрузку и не увеличивать его , 2. Сервер не может установить дополнительные подключения

Тестирование URL-адреса -/api/test обрабатывается приложением rails + nginx в качестве прокси-сервера.

Я проверил тестирование с использованием статических файлов, чтобы проверить второе предложение. Результаты: https://overload.yandex.net/8175

Количество соединений более 2700 = ~ 200 000. Но это число меньше, чем требуется в файле load.ini - const (500000,15s).

Вопрос: почему Yandex Tand не генерирует требуемую нагрузку? или я могу понять результаты неправильно?

ответ

0

При среднем времени отклика сервера 250 мс в течение одной секунды каждый экземпляр фантома может отправлять около 4 запросов в секунду. Таким образом, по умолчанию количество фантомных экземпляров (1000) физически не может отправить> ~ 4000rps - у него нет доступных экземпляров, все они заняты отправкой и ожиданием данных.

Вы можете попробовать использовать несколько экземпляров, как определение в [phantom] разделе instances=10000 Это упоминается в https://yandextank.readthedocs.io/en/latest/core_and_modules.html#basic-options

+0

Существует также участок «Нить» в 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

Смежные вопросы