Задать вопрос

Почему yandex tank не генерирует указанную в конфиге нагрузку?

Привет!
Имеются 2 одинаковых по ресурсам стенда: 16 vCPUs, 2.4 GHz, Intel Xeon E5-2676v3, 64 GiB memory.

На одном генерируется нагрузка, на другом она обрабатывается.

Конфиг load.ini:
[phantom]
address=0.0.0.0 ;target's address(намеренно изменен, конечно)
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 мс):
cda4a7d9654046ea8fa64c0c4558bed4.png
Ожидаем 2000, имеем ~2000 (среднее время отклика 30 мс):
7300696c49934818a6cd2019f6af9b93.png
Ожидаем 3000, имеем ~2700 (среднее время отклика 250 мс):
9e4a6103c57b4bbc888387fde6126486.png
Ожидаем 4000, имеем ~2700 (среднее время отклика 250 мс)::
e85636be93a745519518d984534e54d9.png

Распределение времени отклика:
2d70ea0db0224e58b00a857b11cea643.png

Далее, сколько бы ни увеличивалось планируемое число RPS, фактическое остается в пределах ~ 2700.

Есть предположения:
1. Яндекс Танк "понимает", что сервер перестает справляться с нагрузкой, поэтому далее не увеличивает ее.
2. Не может создать больше подключений к серверу (как проверить?)

Тестируемый url = /api/test обрабатывается rails приложением и проксируется nginx.

Проводил тестирование на статике, чтобы проверить прдположение 2, что сервер не может создать больше подключений. Результаты: https://overload.yandex.net/8175
44cdb07400a847f1a50daf4bdb52abc4.png
Подключений больше, ~200 000, но снова требуемая нагрузка const(500000,15s) не была сгенерирована.

Вопрос: почему Яндекс Танк не генерирует указанную нагрузку? или я неправильно трактую результаты?
  • Вопрос задан
  • 2721 просмотр
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Coffee1
Обратите внимание, вы уперлись в "Active instances". Это количество воркеров, которые занимаются "обстрелом" объекта.
Увеличить можно добавлением опции instances= в конфиг. На старых версиях танка при этом нужно было ещё почистить кэш - все файлы из папки за исключением конфигов (если этого не сделать, то значение останется дефолтным - 1000)
Ответ написан
Комментировать
x67
@x67
actual responses значит "реальных/актуальных ответов" Может отвечают еще, но там таймаут в 2 секунды срабатывает и за ответ это уже не считается?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы