Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 23 11:51
    buhtr commented #845
  • Oct 09 11:49
    IvanVas opened #850
  • Sep 25 12:56
    gmmephisto opened #849
  • Sep 22 07:01
    emorozov opened #848
  • Sep 21 21:16
    kolypto commented #845
  • Sep 09 08:09
    nnugumanov commented #814
  • Sep 08 12:16
    alexfromvl commented #814
  • Sep 01 17:37
    IvanKyznetsov commented #847
  • Sep 01 17:35
    IvanKyznetsov commented #847
  • Sep 01 17:34
    IvanKyznetsov commented #847
  • Sep 01 17:33
    IvanKyznetsov commented #847
  • Sep 01 17:33
    IvanKyznetsov commented #847
  • Sep 01 17:32
    IvanKyznetsov commented #847
  • Sep 01 15:46
    nnugumanov commented #847
  • Aug 30 08:22
    IvanKyznetsov edited #847
  • Aug 30 08:22
    IvanKyznetsov edited #847
  • Aug 30 08:21
    IvanKyznetsov opened #847
  • Jul 31 22:54
    gmmephisto opened #846
  • Jul 31 22:53
    gmmephisto opened #845
  • Jul 30 16:01

    trueival on develop

    add options for influxdb upload… add documentation for ssl and p… try to avoid crashing on availa… and 1 more (compare)

razin3061
@razin3061
Добрый день.
Ктонить настраивал мониторинг через телеграф виндовых серверов?
cronnoss
@cronnoss
Добрый день. Согласно документации мишень на определенный запрос должна ответить 400 Bad request. То есть, это ожидаемый результат. Где в настройках яндекс танка надо прописать, чтобы отчеты покрасивее выглядели
Rus L
@gitlabrus24_gitlab

Добрый день. Кто-нибудь запускал jmx скрипт через Yandex.Tank? У меня при запуске танка выдаёт ошибку:
[Errno 2] No such file or directory: '/home/admin/test.jmx'

Хотя файл лежит там же и права доступа все есть

Rus L
@gitlabrus24_gitlab

конфига для танка такая:

jmeter:
enabled: true
package: yandextank.plugins.JMeter
jmx: /home/admin/test.jmx
jmeter_path: /home/admin/apache-jmeter-5.2.1/bin/jmeter
buffered_seconds: 0
ext_log: none
variables:
protocol: http
host: 127.0.0.1
port: 8080
path: /path/to/endpoint
thread_rpm: 300
loops: 20
texts: scenarios.csv

Farrukh Beck-v
@takikvara_gitlab
https://overload.yandex.net/274509 мониторинг не хочет открываться
и таких много
Farrukh Beck-v
@takikvara_gitlab
чет как то ощущение что это не танк а так консерва
шаг влево шаг вправо все попизде идет сразу
winkool
@winkool
Добрый вечер! подскажите пожалуйста, надо провести нагрузочное тестирование апи. использую BFG. В setup делаю пару запросов получаю создаю сессию, регистрируюсь авторизируюсь. Далее простой кейс
def case1(self, foo):

        with self.gun.measure("get_profile") as get_profile:
            if self.s is None:
                self.get_session()
            job_url = self.url + "profile"
            response = self.s.get(job_url)
при этом не заполняются response time fractions, подскажите как это можно исправить?
Lex
@Lex_SD_gitlab
Только начинаю разбираться в сервисе и чувствую, что вижу чужую борду по ссылке из консоли. Такое возможно?)
Проблема оказалось очень забавной) консоль была в пол экрана и ссылка резалась. Из за этого переходил по урлу на пару цифр короче)
Renat Berezovsky
@BrRenat
Можно как то прокидывать доп параметры в тесты? Нагрузчик пандора. Валидатор конфига ничего кастомного не пропускает
Okey-Test
@Okey-Test
@BrRenat, тут https://github.com/yandex/pandora/blob/develop/examples/custom_pandora/custom_main.go есть пример кастомной пушки. Посмотри, может подойдет
Renat Berezovsky
@BrRenat
неее не то)
Enshin Andrey
@b10s

Привет!
В jmeter я могу задать кол-во тредов (пользователей) и кол-во запросов на пользователя. Таким образом он будет лупить с таким максимальным QPS, который вообще мозможен.
Насколько понимаю, это из мира performance test, т.е. мы можем замерить производительсноть системы N клиентов + сервер.

Верно ли я понимаю, что в jmeter в одном потоке каждый запрос выполняется ровно после того как завершился предыдущий?

А в танке мы создаем пул сокетов - вижу netstat'ом неменяющийся список сокетов к моему серверу - и как-то хитро утилизируем их?

Когда говорю танк имею ввиду дефолт в фантомом
Enshin Andrey
@b10s
Ещё вопросик. А может танк+фантом TLS сессию как curl в логи писать?
...
* found 118 certificates in /etc/ssl/certs/ca-certificates.crt
* found 477 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
*        server certificate verification SKIPPED
*        server certificate status verification SKIPPED
*        common name: *.example.com (does not match '1.1.1.1')
*        server certificate expiration date OK
*        server certificate activation date OK
*        certificate public key: RSA
*        certificate version: #3
*        subject: blabla
*        start date: Wed, 20 Nov 2019 00:00:00 GMT
*        expire date: Thu, 14 Jan 2021 12:00:00 GMT
*        issuer: C=US,O=DigiCert Inc,CN=DigiCert SHA2 Secure Server CA
*        compression: NULL
* ALPN, server accepted to use http/1.1
> GET /?blabla HTTP/1.1
...
Evgeniy Moskalenko
@evgmoskalenko

Ребят, кто может подсказать, что не так делаю? У меня авторизация через mTLS

все настроил для direvius/yandex-tank:latest по доке, запускаю и вижу все запросы с 401. При этом с этими же сертом и приватным ключем могу из постмана без проблем подключиться, так-же могу зайти в контейнер яндекс-танка и дернуть оттуда курлом с сертом и приватным ключем внутри контейнера - 200ОК. Че может быть, никто с подобным, не сталкивался?

phantom:
  address: my-host.com:443
  ssl: true
  client_certificate: ./ssl/client-crt.pem
  client_key: ./ssl/client-key.pem
  timeout: 60s
  header_http: "1.1"
  headers:
    - "[Host: my-host.com]"
    - "[User-Agent: direvius/yandex-tank:latest]"
    - "[Accept: */*]"
    - "[Accept-Encoding: gzip, deflate, br]"
    #- "[Connection: keep-alive]"
    - "[Connection: close]"

# yandex-tank из контейнера
[30/Jun/2020:20:40:03 +0000] "GET /api/ping/ HTTP/1.1" 401 81 "-" "direvius/yandex-tank:latest" 227 0.003 [default-service-8000] [] 10.126.103.242:8000 81 0.000 401 0a5af0b293f75c399735048d9044c3
[30/Jun/2020:20:40:03 +0000] "GET /api/ping/ HTTP/1.1" 401 81 "-" "direvius/yandex-tank:latest" 227 0.003 [default-service-8000] [] 10.126.103.242:8000 81 0.000 401 7c4e6bf298a9e6a95c01e45ee0d56b
[30/Jun/2020:20:40:03 +0000] "GET /api/ping/ HTTP/1.1" 401 81 "-" "direvius/yandex-tank:latest" 227 0.003 [default-service-8000] [] 10.126.103.242:8000 81 0.004 401 a86fe3395d4ddcda0d39892b1f0b47
[30/Jun/2020:20:40:04 +0000] "GET /api/ping/ HTTP/1.1" 401 81 "-" "direvius/yandex-tank:latest" 180 0.003 [default-service-8000] [] 10.126.103.242:8000 81 0.004 401 a3cdbdf48b1bd69fcb5b462994c2a647
[30/Jun/2020:20:40:04 +0000] "GET /api/ping/ HTTP/1.1" 401 81 "-" "direvius/yandex-tank:latest" 183 0.004 [default-service-8000] [] 10.126.103.242:8000 81 0.000 401 45e95e4d7a6168d6a8c17f42834a18aa

# Постманом
[30/Jun/2020:20:40:44 +0000] "GET /api/ping/ HTTP/1.1" 200 6 "-" "PostmanRuntime/7.26.1" 257 0.004 [default-service-8000] [] 10.126.103.242:8000 6 0.004 200 d7b9cae29d18d3a593940939a769af35
[30/Jun/2020:20:53:41 +0000] "GET /api/ping/ HTTP/1.1" 200 6 "-" "PostmanRuntime/7.26.1" 257 0.507 [default-service-8000] [] 10.126.103.244:8000 6 0.508 200 4e90191fa29be3a1da8405f993e75489 
[30/Jun/2020:20:53:44 +0000] "GET /api/ping/ HTTP/1.1" 200 6 "-" "PostmanRuntime/7.26.1" 257 0.596 [default-service-8000] [] 10.126.103.244:8000 6 0.592 200 9aad7822f17ec487de934e19822dca5f
[30/Jun/2020:20:53:45 +0000] "GET /api/ping/ HTTP/1.1" 200 6 "-" "PostmanRuntime/7.26.1" 257 0.682 [default-service-8000] [] 10.126.103.244:8000 6 0.684 200 984619d294ab55604fde5de09bf74e72

# Из контейнера курлом
[30/Jun/2020:20:55:55 +0000] "GET /api/ping/ HTTP/1.1" 200 6 "-" "curl/7.47.0" 109 0.004 [default-service-8000] [] 10.126.103.244:8000 6 0.004 200 bd01903cab326f5ffc999284a028227a
[30/Jun/2020:20:55:56 +0000] "GET /api/ping/ HTTP/1.1" 200 6 "-" "curl/7.47.0" 109 0.003 [default-service-8000] [] 10.126.103.244:8000 6 0.004 200 dca6ac8678a40145e1676eb20190601a
[30/Jun/2020:20:55:59 +0000] "GET /api/ping/ HTTP/1.1" 200 6 "-" "curl/7.47.0" 109 0.008 [default-service-8000] [] 10.126.103.244:8000 6 0.008 200 2c130e4ee835ccd26a8a814a6e7cd5dd
Evgeniy Moskalenko
@evgmoskalenko

пробовал даже пересобрать образ, добавив свой ca.crt самоподписной

FROM direvius/yandex-tank:latest

RUN apt-get install ca-certificates -y
COPY ./config/ssl/ca.crt /usr/local/share/ca-certificates/ca-certificates.crt
RUN update-ca-certificates

curl отработал без параметра -k, но всеравно сам yandex-tank 401 получает

Enshin Andrey
@b10s

а что если танком один запрос отправить и отловить его тцпдампом
так же отловить курловый, успешный, запрос

сравнить в вайршарке заголовки?

Evgeniy Moskalenko
@evgmoskalenko
ща попробую, ток в куб запихну какойнить нетворк тул, спасибо
Evgeniy Moskalenko
@evgmoskalenko

такое впечатление, что Yandex-tank, разучился делать запросы с поддержкой mTLS, продебажил приложение, вот какая разница если отправлять из постмана и танка:

запрос из яндекс-танка:

{
'HTTP_SSL_CLIENT_VERIFY': 'NONE',
'HTTP_X_SSL_AUTHENTICATED': 'NONE',
}

запрос из постмана:

{
'HTTP_SSL_CLIENT_CERT': '-----BEGIN%20CERTIFICATE-----........-----END%20CERTIFICATE-----%0A',
'HTTP_SSL_CLIENT_VERIFY': 'SUCCESS',
'HTTP_SSL_CLIENT_SUBJECT_DN': 'CN=my-cn,OU=Company name,O=Company name,L=Kiev,ST=Kiev,C=UA',
'HTTP_SSL_CLIENT_ISSUER_DN': 'CN=Root Dev CA,OU=Company name,O=Company name,L=Kiev,ST=Kiev,C=UA',
'HTTP_X_SSL_DN': 'CN=my-cn,OU=Exness Trading,O=Company name,L=Company name,ST=Kiev,C=UA',
'HTTP_X_SSL_AUTHENTICATED': 'SUCCESS',
}

это разница, остальную часть запроса убрал

запрос делал на один эндпоинт, в один ингрес кубера, в один и тот-же под
Evgeniy Moskalenko
@evgmoskalenko
оч странно как-то
olsenfromhell
@olsenfromhell
@ninja-tester Привет! Тебе удалось пофиксить "Unable to access to JMeter executable file or it does not exist"? У меня такая же проблема.
andreiolegovichru
@andreiolegovichru

Здравствуйте, запустил впервые танк на Ubuntu 20.04. Делал по инструкции из yandextank.readthedocs.i

получил ошибку. Может быть кто-то сталкивался?

andrei@andrei-ubuntu:~/yandex-tank$ yandex-tank -c load.yaml
Traceback (most recent call last):
  File "/usr/local/bin/yandex-tank", line 5, in <module>
    from yandextank.core.cli import main
  File "/usr/local/lib/python3.8/dist-packages/yandextank/core/__init__.py", line 4, in <module>
    from .tankcore import TankCore  # noqa:F401
  File "/usr/local/lib/python3.8/dist-packages/yandextank/core/tankcore.py", line 25, in <module>
    from yandextank.plugins.DataUploader.client import LPRequisites
  File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/DataUploader/__init__.py", line 1, in <module>
    from .plugin import Plugin  # noqa:F401
  File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 23, in <module>
    from ..Autostop import Plugin as AutostopPlugin
  File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/Autostop/__init__.py", line 1, in <module>
    from .plugin import Plugin  # noqa:F401
  File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/Autostop/plugin.py", line 8, in <module>
    from ..Console import Plugin as ConsolePlugin
  File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/Console/__init__.py", line 1, in <module>
    from .plugin import *  # noqa:F401,F403
  File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/Console/plugin.py", line 7, in <module>
    from .screen import Screen
  File "/usr/local/lib/python3.8/dist-packages/yandextank/plugins/Console/screen.py", line 1018
    key=lambda (k, v): (-1 * v[self.cases_sort_by], k))
               ^
SyntaxError: invalid syntax

Если это как-то связано с несовместимостью Python 3 и Python 2 есть ли где-то инструкция как это обойти?

Файл load.yaml:

phantom:
  address: 192.0.2.130:9151 # [Target's address]:[target's port]
  uris:
    - /
  load_profile:
    load_type: rps # schedule load by defining requests per second
    schedule: line(1, 10, 10m) # starting from 1rps growing linearly to 10rps during 10 minutes
console:
  enabled: true # enable console output
telegraf:
  enabled: false # let's disable telegraf monitoring for the first time
Anatoliy
@iamzepp

Подскажите пожалуйста как передать JSON? так получаю 400 bad request
[Host: XXXXXX]
[Connection: keep-alive]
[User-Agent: Tank]
[Authorization: 123]
[Accept: text/plain]
[Content-Type: application/json;charset=utf-8]

42 api/Mun
{"OrderFields":[],"Limit":50,"Start":0}

andreiolegovichru
@andreiolegovichru
@iamzepp расскажите, пожалуйста, какой способ установки танка вы использовали?
Anatoliy
@iamzepp
@andreiolegovichru ubuntu + docker . Запускаю докер контейнер. Пытался миллион вариаций JSON задать. кидает бэд реквест. Помоги пжл добрый человек)
andreiolegovichru
@andreiolegovichru
@iamzepp Напишите на www.andreyolegovich.ru собака яндекс . Попробую повторить ваши шаги.
Ivan Naidenov
@vanyarock01
Здравствуйте! Подскажите пожалуйста, можно ли использовать танк с кастомными протоколами при помощи, например, собственных плагинов или модулей. Есть потребность, но вот не нашел ни одного примера.
Сергей Голод
@s.golod_gitlab
добрый день. Подскажите какой тип генератора поддерживает последовательное выполнение запросов с временными задержками между ними? И второй вопрос - какой тип генератора умеет ждать получение ответа на запрос, прежде чем выполнять следующий запрос?
Если в общем - то что лучше использовать для формирования сценария нагрузочного тестирования поведения пользователя на сайте, который максимально приближен к реальному поведению?
Kaiwi Siry
@Kaiwisiry
У кого-нибудь еще наблюдаются проблемы с https://overload.yandex.net/ ? Список тестов не может прогрузиться, выгрузка результатов тоже почти не работает
Nikson
@razersph3x
Я так же наблюдаю проблемы с https://overload.yandex.net/
Дмитрий Хуциев
@khutsiev_twitter
Это боль, когда пофиксят?
Nikson
@razersph3x
Пофиксили
Ivan Naidenov
@vanyarock01
Добрый день, @skipor взгляните на пулл реквест в пандору пожалуйста?
yandex/pandora#138
Alexandr Ivanov
@trueival
@vanyarock01 Помёржил.
@s.golod_gitlab если нужна сценарная нагрузка, можно использовать bfg или кастомный сценарий в pandora. В bfg проще реализовать(нужно написать на питоне) но количество таких "пользователей" будет очень ограничено. Pandora намного более производительна, да и возможностей у неё больше, но писать сценарий на go будет немного сложнее.
Ivan Naidenov
@vanyarock01
Спасибо!
Сергей Голод
@s.golod_gitlab

@s.golod_gitlab если нужна сценарная нагрузка, можно использовать bfg или кастомный сценарий в pandora. В bfg проще реализовать(нужно написать на питоне) но количество таких "пользователей" будет очень ограничено. Pandora намного более производительна, да и возможностей у неё больше, но писать сценарий на go будет немного сложнее.

Я уже решил что наиболее подходящим будет использование jmeter. Пока потихоньку пишу сценарии.

У Яндекса последняя версия документации про Танк 1.12.6 (https://yandextank.readthedocs.io/_/downloads/en/develop/pdf/), в докере (direvius/yandex-tank либо direvius/yandex-tank:latest) лежит 1.12.1 (--version).
Где все берут свежую версию?
yononka
@yononka

Привет!
Кто-нибудь может подсказать: если я выставляю конфигурацию
instances: 1
load_type: rps
schedule: const(100,10m)
То всё хорошо.

Если выставляю:
instances: 100
load_type: rps
schedule: const(100,10m)
То сервис падает.

Получается, что каждый из 100 инстансов делает по 100rps, и rps уже не 100, а 100*100 ?

tasofen
@tasofen
Подскажите как настроить мониторинг cpu, mem на удаленном сервере. SSH ключи добавил все подключается из консоли. Запускаю тест в докере... пишет SSHException: No authentication methods available.
Vladislav Popov
@WhatIsLooove
Добрый день, новичок в нагрузочном тестировании, осваиваю Яндекс танк и генератор нагрузки Phantom. Подскажите пожалуйста, как отправить POST запрос с параметрами?
Интересует контент тайп и json и x-www-form-urlencoded
Alexandr Ivanov
@trueival

Привет!
Кто-нибудь может подсказать: если я выставляю конфигурацию
instances: 1
load_type: rps
schedule: const(100,10m)
То всё хорошо.

Если выставляю:
instances: 100
load_type: rps
schedule: const(100,10m)
То сервис падает.

Получается, что каждый из 100 инстансов делает по 100rps, и rps уже не 100, а 100*100 ?

Привет. Нет 100 rps распределяются по этим 100 инстансам. Однако танк делает 100 соединений(keep-alive) или создаёт 100 трэдов которые по очереди преустанавливают соединения с сервисом(close). Возможно сервис укладывает работа с соединениями. Возможно танку не хватает памяти на трэды.

Добрый день, новичок в нагрузочном тестировании, осваиваю Яндекс танк и генератор нагрузки Phantom. Подскажите пожалуйста, как отправить POST запрос с параметрами?
Интересует контент тайп и json и x-www-form-urlencoded

Привет.
https://yandextank.readthedocs.io/en/latest/tutorial.html#request-style вот тут есть пример sample POST requests (binary data). Можно по аналогии сформировать для json

6 replies
Napman10
@Napman10
Привет. Подскажите, пожалуйста, что здесь может быть не так? Не создается график
09:49:53 [ERROR] Failed finishing plugin <yandextank.plugins.DataUploader.plugin.Plugin object at 0x7f0f13d7e310>
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/yandextank/core/tankcore.py", line 318, in plugins_end_test
retcode = plugin.end_test(retcode)
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 317, in end_test
self.save_conf()
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 458, in
save_conf
self.lp_job.send_config(requisites, content)
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 553, in lp_job
self._lp_job = self.get_lp_job()
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 592, in
get_lp_job
lp_job.send_config(LPRequisites.CONFIGINITIAL, yaml.dump(self.core.configinitial))
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 805, in send_config
self.api_client.send_config(self.number, lp_requisites, content, trace=self.log_other_requests)
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 764, in number
self.create()
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/plugin.py", line 788, in create
trace=self.log_other_requests)
File "/usr/local/lib/python2.7/dist-packages/yandextank/plugins/DataUploader/client.py", line 358, in new_job
raise self.JobNotCreated()
JobNotCreated
3 replies
Vadim Ponomarev
@velp

Добрый день. Пытаюсь запустить tank для тестов SSL-terminated балансировки через Haproxy. За Haproxy обычный nginx который в корень / просто отдает ОК.

Конфиг tank следующий:

phantom:
  address: some_ip_here:443
  ssl: true
  instances: 10
  load_profile:
    load_type: rps
    schedule: const(400,2m)
  headers:
    - "[Host: kokoko.ru]"
  uris:
    - /
telegraf:
  enabled: false
console:
  enabled: true # enable console output
uploader:
  enabled: true
  package: yandextank.plugins.DataUploader
  token_file: /var/loadtest/token.txt

Сам tank запущен из официального Docker образа. На Haproxy настроено проксирование 443 -> 80 с self-signed сертификатом. Из самого контейнера с tank и curl

[tank]root@d40bf0338d27: /var/loadtest # curl --insecure --resolve "kokoko.ru:443:some_ip_here" https://kokoko.ru/
OK

и telnet

[tank]root@d40bf0338d27: /var/loadtest # telnet some_ip_here 443
Trying some_ip_here...
Connected to some_ip_here.
Escape character is '^]'.

Connection closed by foreign host.

работают.

Но все запросы на тесте показывают 110 Connection timeout. На стороне Haproxy вижу что запросы прилетают но Haproxy их режектит.

Aug 28 14:33:25 60f6227c-3c61-4b04-9401-2fd8d5839823 haproxy[9513]: ***:57010 [28/Aug/2020:14:33:25.639] 7b82a0aa-8f99-4cc6-ba1b-ac9e8eaba837/1: SSL handshake failure
Aug 28 14:33:25 60f6227c-3c61-4b04-9401-2fd8d5839823 haproxy[9513]: ***:56978 [28/Aug/2020:14:33:25.639] 7b82a0aa-8f99-4cc6-ba1b-ac9e8eaba837/1: SSL handshake failure
Aug 28 14:33:25 60f6227c-3c61-4b04-9401-2fd8d5839823 haproxy[9513]: ***:56932 [28/Aug/2020:14:33:25.639] 7b82a0aa-8f99-4cc6-ba1b-ac9e8eaba837/1: SSL handshake failure

Как подружить yandex-tank с self-signed SSL?

Пробовал добавлять в конфиг tank настройки client_certificate и client_key с файлами, но результат тот же.