Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Sep 10 15:44

    trueival on master

    Update python-test.yml (compare)

  • Sep 10 15:40

    trueival on master

    Update pandas from 1.1.5 to 1.2… fix start_time in shootexec re… LOADSUPPORT-49 fix loop conditi… and 40 more (compare)

  • Sep 10 15:40
    trueival closed #861
  • Sep 10 15:38
    trueival commented #861
  • Sep 08 14:24
    arcadia-devtools synchronize #861
  • Sep 07 14:11
    arcadia-devtools synchronize #861
  • Sep 06 21:10
    arcadia-devtools synchronize #861
  • Sep 06 14:01
    arcadia-devtools synchronize #861
  • Sep 02 10:25
    arcadia-devtools synchronize #861
  • Sep 01 17:09
    Kirill380 edited #862
  • Sep 01 17:09
    Kirill380 opened #862
  • Aug 31 12:07
    arcadia-devtools synchronize #861
  • Aug 11 14:23
    arcadia-devtools synchronize #861
  • Aug 05 09:20
    arcadia-devtools synchronize #861
  • Aug 04 00:11
    fomars synchronize #861
  • Aug 02 09:50
    arcadia-devtools synchronize #861
  • Jul 30 14:22
    arcadia-devtools synchronize #861
  • Jul 29 14:57
    fomars reopened #861
  • Jul 29 14:57
    fomars closed #861
  • Jul 29 14:56

    fomars on master

    Update python-test.yml (compare)

Taurreason
@Taurreason
судя по логам, файл .jmx видит, но потоки не выводит. Overload пустой
Alex A Linch
@ALEXLINCHEVSKY
Отсюда следует, что либо оставить как есть. Либо дописать обвязку, что данные о потоках яндекс.танк мог вычитывать из JMeter
Taurreason
@Taurreason
@ALEXLINCHEVSKY а есть пример?
dummer232
@dummer232
Добрый вечер, всем!
А как можно протестировать внутренние ресурсы (внутренние сайты или отдельно tomcat instance)
Я прописал address: sd-test-tomcat:8080, В ответ получаю [Errno -2] Name or service not known
Timur Torubarov
@nettorta
@dummer232 укажите FQDN до вашего хоста
John-Beam
@John-Beam
День, добрый. Есть вопрос - я не спец по танку но заказчик меня носом в него тыкает и я не могу ничего противопоставить в ответ. Подскажите плиз. Я поставил баллансировщик перед приложением и заказчик утверждает что баллансировщик не держит нагрузку. А мне думается что всё дело в том что его приложение тупитю. https://clck.ru/LSpWj Помогите понять прав я или нет?
MilyaushaV
@MilyaushaV
Доброй ночи) для одновременных get + post запросов только ammo_type: phantom подходит? https://yandextank.readthedocs.io/en/latest/tutorial.html#request-style
hellboy81
@hellboy81
Привет. Подходит ли Яндекс танк для стресс тестов?
Alex A Linch
@ALEXLINCHEVSKY
Зависит от сценария. Если статика через Phantom. То можно долбануть максимален со своего генератора. Везде по разному , где-то 20 000 tps, а где-то и 180 000 tps. Зависит от мощности генератора.
На сложных сценариях типа Jmeter Gatling BFG Pandora , там мощности гораздо меньше. Но стресануть систему в принципе реально
Ilja
@morozen
@John-Beam почему бы не проверить приложение напрямую, без балансировщика. Создайте одинаковые условия для обоих сценариев. Результат даст понять, что именно тупит.
saltiveratia
@saltiveratia
Добрый вечер
В доке phantom написано, что он не предназначен для работы с человекочитаемыми репортами и является просто нагрузочным инструментом. Пыталась найти есть ли готовые инструменты танка для проверки ответа сервера хотя бы на тип данных. В задаче нужно убедиться что отдаётся действительно JSON
JMeter как генератор не рассматриваем пока, только фантом
saltiveratia
@saltiveratia
Помогите, пожалуйста.
saltiveratia
@saltiveratia

~$ sudo add-apt-repository ppa:yandex-load/main && sudo apt-get update

More info: https://launchpad.net/~yandex-load/+archive/ubuntu/main
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keybox '/tmp/tmptr1qpatx/pubring.gpg' created
gpg: /tmp/tmptr1qpatx/trustdb.gpg: trustdb created
gpg: key 0CDB03F8CB37D8D1: public key "Launchpad PPA for Yandex Load Team" imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: no valid OpenPGP data found.
Hit:1 http://deb.debian.org/debian buster InRelease
Hit:2 http://deb.debian.org/debian buster-updates InRelease
Hit:3 http://security.debian.org/debian-security buster/updates InRelease
Hit:4 http://ftp.debian.org/debian buster-backports InRelease
Ign:5 http://ppa.launchpad.net/yandex-load/main/ubuntu focal InRelease
Err:6 http://ppa.launchpad.net/yandex-load/main/ubuntu focal Release
404 Not Found [IP: 91.189.95.83 80]
Reading package lists... Done
E: The repository 'http://ppa.launchpad.net/yandex-load/main/ubuntu focal Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

GolivetsAndreu
@GolivetsAndreu
phantom:
  address: 127.0.0.1:3030
  uris:
    - /
  load_profile:
    load_type: rps
    schedule: line(1, 10, 2m)
  writelog: all
  headers:
    - "[Host: 127.0.0.1]"
console:
  enabled: true
telegraf:
  enabled: true
overload:
  enabled: true
  job_name: test
  job_dsc: test description
  token_file: token.txt
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.7/dist-packages/yandextank/core/consoleworker.py", line 382, in run
self.core.plugins_prepare_test()
File "/usr/local/lib/python3.7/dist-packages/yandextank/core/tankcore.py", line 253, in plugins_prepare_test
plugin.prepare_test()
File "/usr/local/lib/python3.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 270, in prepare_test
self.core.job.subscribe_plugin(self)
File "/usr/local/lib/python3.7/dist-packages/yandextank/core/tankcore.py", line 61, in subscribe_plugin
monitoring_plugin.add_listener(plugin)
File "/usr/local/lib/python3.7/dist-packages/yandextank/plugins/Telegraf/plugin.py", line 218, in add_listener
return self.monitoring.add_listener(plugin)
AttributeError: 'NoneType' object has no attribute 'add_listener'
GolivetsAndreu
@GolivetsAndreu
Подскажите в чем может быть проблема?
Ivan Tolstosheyev
@itroot

@DannyMartyn

Привет! Помогите, пожалуйста, столкнулся с такой проблемой:
alt
title

Привет! Overload does not support fractional loadschemes yet у тебя получалась из-за float? У меня это происходит из-за выставления составной схемы нагрузки в пандоре:

        rps:
          - {duration: 10s, type: const, ops: 5}
          - {duration: 10s, type: const, ops: 1}
konovalovvlad2
@konovalovvlad2
Все привет. Подскажите, как можно отправлять json данные POST? В доках не нашел
Plombirius
@Plombirius
@konovalovvlad2 использовать jmeter в качестве генератора нагрузки?
Я тут туплю с танком, где можно изменить хост для yandex-tank и yandex-tank-check-ssh c example.org на нужный мне? я слеп и в документации не нашел.
Andrey Filatov
@afilatov

@konovalovvlad2

Все привет. Подскажите, как можно отправлять json данные POST? В доках не нашел

Если в формате uripost, то примерно так

[Host: example.org]
[Content-type: application/json]
[User-Agent: Tank]
18 /route
{"simple": "json"}
26 /route tag1
{"simple": ["json", "#2"]}

Если в формате phantom, то как-то так (только его лучше генераторами генерить):

145 
POST /route HTTP/1.1
Host: example.org
Connection: Keep-Alive
Content-Length: 26
Content-Type: application/json

{"simple": ["json", "#2"]}
Andrey Filatov
@afilatov

@Plombirius

Я тут туплю с танком, где можно изменить хост для yandex-tank и yandex-tank-check-ssh c example.org на нужный мне? я слеп и в документации не нашел.

Возможно неправильно понял вопрос (нужно чуть больше контекста), но у yandex-tank-check-ssh есть аргумент

'-e', '--endpoint', default='example.org', help='which host to try'

https://github.com/yandex/yandex-tank/blob/4fe054cc0c7f1f42d56e34d1c05a44075cdef78f/yandextank/common/util.py#L124

Plombirius
@Plombirius
@afilatov спасибо! именно это и спрашивал. Не догадался как то в коде аргументы поискать.
konovalovvlad2
@konovalovvlad2

@afilatov спасибо большое. У меня вопрос. Вот мой ammo.txt

[Content-Type: application/json]

240 /api/v1/addUserTest
{
   "api_key":"2081b837b451ea0ad723fbe8d2aca5",
   "userData": {
       "email": "",
       "username": "",
       "plainPassword": {
          "first":"123",
          "second":"123"
       },
       "nickname": "sample_nickname",
   }
}

Мне надо сгенерерить таких записей в этом файле около 5000 или 10000, не важно. Мне важно чтобы email и username менялись при каждом обстреле сервера. Т.е. если у меня в конфиге const (10, 1m), то мне надо 600 таких записей с уникальными email и username . Как мне его сгенерить ?

phantom:
  address: host:443
  ammo_type: uripost
  ammofile: config/api_add_user.txt
  load_profile:
    load_type: rps
    schedule: const(10,1m)
  ssl: true
console:
  enabled: true
telegraf:
  enabled: false
QABiZone
@QABiZone
коллеги - можно ли послать в phantom HTTPS - запросы ?
Alex A Linch
@ALEXLINCHEVSKY
@Taurreason у меня пока нет такого примера
Timur Torubarov
@nettorta
@QABiZone
phantom:
  ssl: true
konovalovvlad2
@konovalovvlad2
Привет коллеги. У вопрос такой. Допустим у меня в *.txt файле есть такие снаряды. В данном примере 3. Вопрос: перед обстрелом он считывает все три строки или же перед каждой стрельбой берет новые данные из этого файла?
70 /api/v1/deleteUser
{
  "api_key":"2081b837b451ea0ad723fbe8d2aca5",
  "user_id": 999999
}

97 /api/v1/authUser
{
  "api_key":"2081b837b451ea0ad723fbe8d2aca5",
  "username": "adminuser",
  "password": "123"
}

87 /api/v1/dataUser
{
  "api_key":"2081b837b451ea0ad723fbe8d2aca5",
  "user_id": 1,
  "filter": "general"
}
Timur Torubarov
@nettorta
@konovalovvlad2 перед каждым запуском танк генерирует из этого файла длинный файл со всеми запросами, которые будут использованы в тесте. Если у вас будет расписание 500 рпс на 2 часа - танк сгенерит файл с 3600000 запросами, которые будут сгенерированы исходя из файла с патронами, который вы указали. Танк читает из файла патроны сверху вниз, при достижении конца файла начинает читать его заново.
Поэтому ответ на оба ваших вопроса - да. Все три строки и перед каждой стрельбой новые данные из этого файла, если файл вдруг изменился.
Vlad Kvetkin
@VladKvetkin

Всем привет. Возникла такая проблема.
Запускаю танк с JMeter. Тестирование работает, запросы отправляются. Но при завершении зависает на стадии "Stopping load generator and aggregator".

В tank.log последняя запись

2020-01-28 11:07:02,289 [DEBUG] yandextank.aggregator.tank_aggregator tank_aggregator.py:126 Waiting for gun drain to finish

Конфиг танка:

console:
  enabled: true
telegraf:
  enabled: false
overload:
  enabled: true
  package: yandextank.plugins.DataUploader
  api_address: https://overload.yandex.net
  token_file: token.txt
  job_name: jmeter_test
  job_dsc: jmeter_test
jmeter:
  enabled: true
  package: yandextank.plugins.JMeter
  jmeter_path: /usr/local/apache-jmeter-3.3/bin/jmeter
  jmx: test_jmeter.jmx
phantom:
  enabled: false

В чем может быть проблема ?

Oleg Gumbar
@Brightside56_gitlab
Я верно понимаю, JMeter поддерживает только ammo в jmx?
Спасибо
Andrey Radygin
@andreyradygin
Коллеги, нужна подсказка.
Натравливаю танк на цель, делаю нагрузку const rps, задаю например 600рпс, но больше 300 танк не выдает вообще. Физически - ни во что не упирается, ни в сеть, ни в диски и тд. НО, приложение на 300рпс начинает сильно таймаутить и еррорить, около 20% ошибок и общее время ответа подскакивает.
Так вот, у меня ощущение, что танк искусственно останавливает наращивание рпс из себя, если на каком-то уровне получает определенный процент ошибок и/или медленных ответов.
Наблюдал ли кто такое поведение? Чем это объяснить?
При этом из того же места, в ту же цель, но на статическое приложение, выдает и 15к рпс, без проблем, и соответственно нет ошибок и медленных ответов.
Alex A Linch
@ALEXLINCHEVSKY
@andreyradygin это странно. У меня в статике по динамическим запросам более 1000 рпс стреляет. Хотя упирается в слабеньким генераторе на 20 000 рпс. Иногда достреливал до 24 000 рпс.
Таймауты надо настраивать, по умолчанию у танка стоит 11 секунд ожидания. Я когда свой сервис проверял сначала не поня, почему у таймауты полка , потом перенастроил и некоторые части выдавали latency в 81 секунду. Это было важно посмотреть на связках приложений.
Пробуй и настраивай. Я сейчас пока использую 120 секунд. И пока одним генератором. Если сервис выдержит придется подключать кластер генераторов через gattling_ip компонент
Andrey Filatov
@afilatov
@andreyradygin Посмотрите на кол-во инстансов, которые использует танк в ходе вашего теста. С высокой вероятностью при деградации вашего приложения танк упирается в дефолтный лимит в 1000 инстансов. При этом при среднем времени ответа приложения около 3 секунд танк из 1000 инстансов будет способен выдавать около 300рпс. Чтобы танк не упирался в кол-во инстансов, их можно увеличить в конфиге в секции phantom (https://yandextank.readthedocs.io/en/latest/config_reference.html#id20), например, ориентировочно в соответствии с той же формулой Литтла <Кол-во инстансов> = <Допустимое время ответа сервиса/таймаут, сек> * <Нужный RPS>. Если получаемое кол-во инстансов выходит слишком большим (десятки тысяч), то здесь имеет смысл подумать о нагрузке с нескольких машин
Andrey Radygin
@andreyradygin
Спасибо за инфу! Проверю.
Я тоже что-то такое подозревал про количество инстансов.
И получается, что если приложение сильно начинает тупить - больше 5 секунд на ответ, то и увеличение инстансов может не слишком помочь?
Andrey Filatov
@afilatov
@andreyradygin Если вы хотите добиться того, чтобы в ходе теста танк смог выдать указанное в расписании кол-во RPS и при этом для тестируемого приложения допустимы долгие ответы, то увеличение кол-ва инстансов по указанной выше прикидочной формуле в этом должно помочь. При этом я бы рекомендовал при сильно больших значениях кол-ва инстансов наблюдать за утилизацией ресурсов и ошибками на машинке, с которой подается нагрузка. Можно еще дополнительно понизить таймаут с дефолтных 11 секунд до максимально допустимых у вас, например, 5 секунд, чтобы инстансы быстрее освобождались, но это не всегда допустимо.
Alexandr Popov
@Alex2ndr
Привет!
А авторизация на overload совсем сломалась?
Оно там пытается попасть за каким-то js на login.persona.org...
Plombirius
@Plombirius

Коллеги, а подскажите в какую сторону копать, прикрутил telegraf, к хосту он коннектится загружает агент, потом в консоли показывается что monitoring is online:, но никаких измеряемых параметров не показывает.
При этом в файле agent_xxx.xxx.xxx.xxx.rawdata данные есть
Но в консоль ничего не выводится

phantom:
  enabled: false
jmeter:
  enabled: true
  jmx: /opt/jmeter/testplan/XXX.jmx
  args:
  jmeter_path: /opt/jmeter/apache-jmeter-5.0/bin/jmeter
  jmeter_ver: 5.0
  ext_log: all
console:
  enabled: true
telegraf:
  enabled: true
  package: yandextank.plugins.Telegraf
  config: /home/jtank/yt_mon_teleg

конфиг мониторинга:

<Monitoring>
        <Host address="xxx.xxx.xxx.xxx" interval="1">
                <CPU/> <Memory/>
        </Host>
</Monitoring>
Dmitry Belyavtsev
@vk26
Добрый день! А как прописать в конфиге танка, чтобы в uris прописывать рандомное значение? Что-то типа
/users/search?name={random_string}
Andrey Filatov
@afilatov

@vk26 Если говорить про связку Yandex.Tank + phantom, то она не поддерживает динамические значения в url и телах запросов и изменение запросов в ходе выполнения теста. Вы должны до начала теста сгенерировать статичную ленту запросов с подставленными "рандомными" значениями вида

 /users/search?name=random_string1
 /users/search?name=random_string2
 /users/search?name=random_string3
 /users/search?name=random_string4
 ....

и указать ее в конфигурации теста.
При этом надо учитывать, что полученная лента является все же статичной, поэтому при повторных запусках теста с этой лентой будут прогоняться одни и те же запросы, да и в рамках одного теста при недостаточной длине ленты она может проигрываться много раз. Это может достаточно сильно влиять на результаты тестов, когда тестируемая система использует, например, кеширование результатов запросов или механизмы идемпотентных операции. Частично это можно решить бОльшим размером ленты (кстати, танк поддерживает сжатые gzip ленты) и генерацией новой ленты перед очередным запуском теста. Но все это несколько усложняет процесс тестирования.

Orkhan
@orihomie
Здравствуйте, подскажите, пожалуйста - где можно найти информацию по графикам из результатов запуска нагрузки? Мне нужно понимать - как имплементировать эти самые графики.
winkool
@winkool
Добрый день, прошу прощения за глупый вопрос, но может кто-то скинуть ссылку на инструкцию как запустить танк на windows?