Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jun 16 11:17
    dacdodinh99 opened #859
  • Apr 09 16:07
    zifter opened #858
  • Feb 16 12:02
    k-morozov commented #855
  • Feb 12 13:40
    zhangguanzhang commented #845
  • Jan 27 19:50
    megazazik closed #787
  • Dec 29 2020 10:11
    sour59 opened #857
  • Dec 21 2020 04:55
    Taalaibekova31 opened #856
  • Dec 11 2020 10:27
    popov-r commented #773
  • Dec 11 2020 10:26
    popov-r commented #773
  • Dec 10 2020 10:51
    JavaUnchained opened #855
  • Dec 02 2020 21:44

    fomars on master

    Update README.md (compare)

  • Dec 02 2020 21:40
    fomars closed #852
  • Dec 02 2020 19:25
    fomars synchronize #852
  • Dec 02 2020 19:25

    fomars on master

    Merge pull request #839 from ya… add options for influxdb upload… add documentation for ssl and p… and 3 more (compare)

  • Dec 01 2020 12:41
    fomars synchronize #852
  • Dec 01 2020 12:41

    fomars on master

    fix binary ammo & caseline + te… YANDEXTANK-456 fix encoding whi… fix test data ref:bc5f5a0d8f30… and 1 more (compare)

  • Dec 01 2020 12:41
    fomars closed #854
  • Nov 30 2020 10:49
    fomars opened #854
  • Nov 23 2020 14:56
    fomars closed #853
  • Nov 23 2020 14:55
    fomars opened #853
Alex A Linch
@ALEXLINCHEVSKY
Пробуй и настраивай. Я сейчас пока использую 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?
victorkaplunov
@victorkaplunov
@winkool в докер-котейнере запускайте. Для винды даже графический клиент есть.
winkool
@winkool
танк упал что-ли?
GolivetsAndreu
@GolivetsAndreu
Что с overload?
Plombirius
@Plombirius
Схватил следующую ошибку когда складывал данные в инфлюкс, если просто выводить на консоль ошибки нет:
16:33:15 [INFO] Artifacts dir: /home/jtank/logs/2020-02-05_16-33-03.234103
16:33:27 [ERROR] Test interrupted:
<class 'influxdb.exceptions.InfluxDBClientError'>: 400: {"error":"partial write: field type conflict: input field \"custom:cpu-cpu-total_usage_iowait\" on measurement \"monitoring\" is type float, already exists as type integer dropped=1"}
  File "/usr/lib/python2.7/site-packages/yandextank/core/consoleworker.py", line 386, in run
    self.retcode = self.core.wait_for_finish()
  File "/usr/lib/python2.7/site-packages/yandextank/core/tankcore.py", line 290, in wait_for_finish
    retcode = plugin.is_test_finished()
  File "/usr/lib/python2.7/site-packages/yandextank/plugins/Telegraf/plugin.py", line 227, in is_test_finished
    data_len = self.monitoring.poll()
  File "/usr/lib/python2.7/site-packages/yandextank/plugins/Telegraf/collector.py", line 119, in poll
    self.send_collected_data()
  File "/usr/lib/python2.7/site-packages/yandextank/plugins/Telegraf/collector.py", line 149, in send_collected_data
    listener.monitoring_data(copy.deepcopy(data))
  File "/usr/lib/python2.7/site-packages/yandextank/plugins/InfluxUploader/plugin.py", line 82, in monitoring_data
    for chunk in chop(data_list, self.get_option("chunk_size"))
  File "/usr/lib/python2.7/site-packages/yandextank/plugins/InfluxUploader/plugin.py", line 88, in _send_monitoring
    's'
  File "/usr/lib/python2.7/site-packages/influxdb/client.py", line 530, in write_points
    consistency=consistency)
  File "/usr/lib/python2.7/site-packages/influxdb/client.py", line 598, in _write_points
    protocol=protocol
  File "/usr/lib/python2.7/site-packages/influxdb/client.py", line 343, in write
    headers=headers
nifantova
@nifantova
Добрый вечер. Использую bfg для нагрузочного тестирования, при относительно небольшом rps получаю следующую ошибку: [ERROR] Results full. Data corrupted
В чем может быть дело?
winkool
@winkool
подскажите пожалуйста при попытке запуска теста из примера BFG выдаёт такую ошибку "Scenario not found: default"
load.yaml
core:
lock_dir: .
phantom:
enabled: false
bfg:
enabled: true
instances: 10
ammofile: ammo.txt
gun_config:
class_name: LoadTest
module_path: ./
module_name: bfg
init_param: Hello
gun_type: ultimate
load_profile:
load_type: rps
schedule: const(1, 30s)
uploader:
enabled: true
package: yandextank.plugins.DataUploader
api_address: https://overload.yandex.net
token_file: token.txt
console:
enabled: true # enable console output
telegraf:
enabled: false # let's disable telegraf monitoring for the first time
ammo.txt и файл bfg.py как в примере https://yandextank.readthedocs.io/en/latest/core_and_modules.html#bfg
Plombirius
@Plombirius
А почему я получаю неизвестные поля на grafana_dashboard & grafana_root на всякий случай, делал копи паст из документации, но ошибка сохранилась:
jtank@TestingGround ~]$ yandex-tank -c ./yandex_tank_jmeter_influx.yaml
No handlers could be found for logger "netort.resource"
14:40:02 [ERROR] Config validation error:
Validation error:
influx:
  grafana_dashboard:
  - unknown field
  grafana_root:
  - unknown field
Andrey Filatov
@afilatov
@Plombirius Какой версией Танка вы пользуетесь? Если 1.12.х, то велика вероятность, что полей графаны в конфиге плагина influx уже нет из-за его переписывания в рамках этого коммита (https://github.com/yandex/yandex-tank/commit/5ff33778e930e45ca996f1f63386896fd9015e8c#diff-a206906e042101779559a43db3a6a968), что отражено в документации, которая в репозитории (https://github.com/yandex/yandex-tank/blob/develop/docs/core_and_modules.rst#influxdb ). Попробуйте, версию 1.11.x, там эти параметры есть
Timur Torubarov
@nettorta
@Plombirius просто уберите эти поля, они не имеют никакого смысла в этом плагине
zaborovsky91
@zaborovsky91
Подскажите пожалуйста, я новичок в танке, нужна миним. конфигурация, которая поможет определить максимальное кол-во запросов, которое выдержит сервер при обращение к определенным 3 страницам, и хотя бы в кратце куда/ что смотреть на какие графики?
leha0794
@leha0794

Всем привет, может кто скинуть готовый-рабочий пример, хотя бы с одним запросом, без всяких мониторингов (хочу просто запустить и посмотреть, может пойму так, чем через туториал)
Что-то типа этого (пытался на juice-shop.herokuapp.com проверить)
load.yaml

phantom:
  address: 52.209.151.97:443
  ssl: true
  load_profile:
    load_type: rps
    schedule: const(1, 7s)
  ammofile: /var/loadtest/ammo_local.txt
  ammo_type: uri

ammo_local.txt

[Host: 52.209.151.97]
[Connection: close]
[User-Agent: Tank]
/rest/products/search?q=

Я как только ни пробовал, в ответ получаю 502, 500, 404, 400, но ни как не 200

guard43ru
@guard43ru

Всем привет, yandex-tank не поддерживает HTTPS SNI?

пересобрал контейнер на ubuntu:bionic (OpenSSL 1.1.1), s_client подключается без проблем,
a у танка ошибка SSL error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (71 Protocol error)

guard43ru
@guard43ru
вобщем поменял phantom на jmeter и все заработало
Alex A Linch
@ALEXLINCHEVSKY

@leha0794 тут немного не верно созданы файлы. в файле ammo_local.txt не должно быть header-ов. их надо прописывать в load.yaml. сам же файл ammo_local.txt должен содержать оставшуюся часть запроса без домена.
load.yaml

phantom:
  address: 52.209.151.97:443
  ssl: true
  load_profile:
    load_type: rps
    schedule: const(1, 7s)
  ammofile: /var/loadtest/ammo_local.txt
  ammo_type: uri
  header_http: '1.1'
  headers:
      - "[Host: 52.209.151.97]"
      - "[Connection: close]"
      - "[User-Agent: Tank]"

ammo_local.tex

/rest/products/search?q=  api-1  
/rest/products/dashboard  api-2 
/rest/products/basket  api-2

api-1 - это тег для конкретного запроса или может быть выставлен у группы запросов
api-2 - это тег для конкретного запроса или может быть выставлен у группы запросов

теги пишутся в конце строки запроса и отделяются символом TAB - \t = </some/api/request>\t<api-tag> (конечно без скобок < и >)

Andrey Filatov
@afilatov
@ALEXLINCHEVSKY Про заголовки в файле с патронами не совсем верная информация: форматы uri и uripost допускают наличие заголовков внутри файлов с патронами https://yandextank.readthedocs.io/en/latest/tutorial.html#uri-style-uris-in-file
@leha0794 По поводу ответов с кодами 502, 500, 404, 400 я бы посоветовал посмотреть на логи ответов в файле answ_XXXX.log, возможно там будет больше информации. Из приведенных вами конфигов сложно понять причину
Andrey Filatov
@afilatov
@guard43ru Если говорить про Yandex.Tank и phantom, то поддержка SNI там не очень. Если тестируете какой-то один хост, то есть хак с пересборкой phantom с указанием этого хоста (см. https://gist.github.com/nnugumanov/90578be2e6a229e56ae1#file-gistfile1-txt-L3-L6 и https://github.com/yandex-load/phantom/blob/master/pd/ssl/bq_conn_ssl.C#L112), но это не очень масштабируемое решение.
Alex A Linch
@ALEXLINCHEVSKY
по этой инструкции да - но при этом это не работает

@afilatov

@ALEXLINCHEVSKY Про заголовки в файле с патронами не совсем верная информация: форматы uri и uripost допускают наличие заголовков внутри файлов с патронами https://yandextank.readthedocs.io/en/latest/tutorial.html#uri-style-uris-in-file

по этой инструкции да - но при этом это не работает. а указанные заголовки и длины строк создаются в процессе формирования ленты-патронов в файле ammo.stpd иначе не верно формируется и длина строки и строка запроса как GET так и POST типов

я с этим бился более 2-х недель - и много чего перелопатил . возможно у меня устаревшая сборка. но та которой я пользуюсь работает именно так
Alex A Linch
@ALEXLINCHEVSKY
и тесты я запускаю у себя именно вот этой командой
adm@adm:~$ yandex-tank -c load.yaml ammo.txt
Leonid
@leoag_gitlab
Подскажите есть ли простой способ сгенировать общий отчет (не используя сервис overload) с временами ответа, ошибками ? Использую yandex+phantom или все делают свой парсер?
Kirill Amurskiy
@KirillAmurskiy
Добрый день, подскажите, а есть ли возможность в phantom ammo файлах использовать русские символы? (да и вообще любые не английские). В документации написано "utf-8 symbols only", русские символы, вроде как, вполне utf-8. Но при попытке скармливания танку запросов с русскими символами, он их не досылает до целевого сервиса, пишет bad request 400. В логах не нашел в чем дело. Если всю конфигурацию оставлять такой же, но использовать только английские символы, то запросы доходят.
belomore
@Tonsofattraction
Прям в урлах? попробуйте заэнкодить
Kirill Amurskiy
@KirillAmurskiy
@Tonsofattraction , спасибо, помогло!
MilyaushaV
@MilyaushaV
Добрый день, для одновременных get + post запросов какой ammo_type нужен? Согласно документации там только phantom подходит https://yandextank.readthedocs.io/en/latest/tutorial.html#request-style
Plombirius
@Plombirius

Коллеги, а что у меня поломалось? Работало все ок, а потом стал получать вот такое.
Удалял и ставил танr заново. Не помогает

[jtank@TestingGround home]$ yandex-tank -v Traceback (most recent call last): File "/usr/local/bin/yandex-tank", line 11, in <module> load_entry_point('yandextank==1.12.8.1', 'console_scripts', 'yandex-tank')() File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 476, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2700, in load_entry_point return ep.load() File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2318, in load return self.resolve() File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2324, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/local/lib/python3.6/site-packages/yandextank/core/__init__.py", line 4, in <module> from .tankcore import TankCore # noqa:F401 File "/usr/local/lib/python3.6/site-packages/yandextank/core/tankcore.py", line 25, in <module> from yandextank.plugins.DataUploader.client import LPRequisites File "/usr/local/lib/python3.6/site-packages/yandextank/plugins/DataUploader/__init__.py", line 1, in <module> from .plugin import Plugin # noqa:F401 File "/usr/local/lib/python3.6/site-packages/yandextank/plugins/DataUploader/plugin.py", line 23, in <module> from ..Autostop import Plugin as AutostopPlugin File "/usr/local/lib/python3.6/site-packages/yandextank/plugins/Autostop/__init__.py", line 1, in <module> from .plugin import Plugin # noqa:F401 File "/usr/local/lib/python3.6/site-packages/yandextank/plugins/Autostop/plugin.py", line 8, in <module> from ..Console import Plugin as ConsolePlugin File "/usr/local/lib/python3.6/site-packages/yandextank/plugins/Console/__init__.py", line 1, in <module> from .plugin import * # noqa:F401,F403 File "/usr/local/lib/python3.6/site-packages/yandextank/plugins/Console/plugin.py", line 7, in <module> from .screen import Screen File "/usr/local/lib/python3.6/site-packages/yandextank/plugins/Console/screen.py", line 1018

Vadim Yangunaev
@ninja-tester
Всем привет!
Подскажите, есть ли возможность стрелять из нескольких танков так, чтобы результаты сливались в один репорт оверлоада?
Если в качестве пушки использовать JMeter?
Vadim Yangunaev
@ninja-tester
Еще вопрос)
Возможно ли использовать JMeter на ВМ предоставляемой Яндекс Облаком? Кто-нибудь пробовал?
Я хочу запустить тест из Яндекс.Облака, использую готовую ВМ Яндекс.Танк (v1.11.2)
Доустановил на неё Java и JMeter, но при запуске теста происходит ошибка
Unable to access to JMeter executable file or it does not exist: /usr/local/apache-jmeter-5.2.1/bin/jmeter
Timur Torubarov
@nettorta
@ninja-tester можно. а куда вы JMeter установили? пути сходятся?
Renat Berezovsky
@BrRenat
Всем привет, возможно уже было в чате. Подскажите пожалуйста, последняя версия пандоры и яндекс танка совместимы?
0.3.0 pandora, 1.12.8 yandex tank
Я смог запустить http тест на 0.1.3 версии пандоры, но грпц сценарий скомпилированный на 3ей версии не работает
Vadim Yangunaev
@ninja-tester

@nettorta да, путь сходится
Пробовал сейчас вот сюда установить:
/home/tank/apache-jmeter-5.2.1/bin/jmeter

Если таким образом запускать только JMeter, то этот путь работает и JMeter стартует тест:
/home/tank/apache-jmeter-5.2.1/bin/jmeter -n -t ReloadTest.jmx -l result-1.jtl -e -o ./result-1

В load.yaml прописал:

phantom:
  enabled: false
jmeter:
  enabled: true
  jmx: ReloadTest.jmx
  buffered_seconds: 10
  jmeter_path: /home/tank/apache-jmeter-5.2.1/bin/jmeter
  jmeter_ver: 5.2
  ext_log: all
overload:
  enabled: true
  package: yandextank.plugins.DataUploader
  token_file: "token.txt"

При запуске получаю ошибку

06:49:54 [ERROR] Test interrupted:
<type 'exceptions.RuntimeError'>: Unable to access to JMeter executable file or it does not exist: /home/tank/apache-jmeter-5.2.1/bin/jmeter
bahodir-annaev
@bahodir-annaev
Всем привет. При нагрузке rps не превышает 300 запросов на самом деле schedule: line(400, 1000, 2m) выглядит так. Можете подсказать почему....