Size: a a a

QA — Load & Performance

2021 February 13

VB

Viktor Bashkatov in QA — Load & Performance
Вячеслав Смирнов
Приветствую!
Я использовал вот такие настройки:

[[graphite]]
 enabled = true
 database = "jmeter"
 bind-address = ":2002"
 protocol = "tcp"
 templates = [
   "jmeter.test.* measurement..field",
   "jmeter.*.ok.* measurement.samplerName.status.field",
   "jmeter.*.ko.* measurement.samplerName.status.field",
   "jmeter.*.a.* measurement.samplerName.status.field",
   "jmeter.*.h.count measurement.samplerName.field*",
   "jmeter.*.sb.bytes measurement.samplerName.field*",
   "jmeter.*.rb.bytes measurement.samplerName.field*"
 ]
 separator = "."
 batch-size = 5000
 batch-pending = 10
 batch-timeout = "10s"

Настройки в соответствие с документацией. С Graphite Listener сложность в том, что надо будет самостоятельно составлять Grafana доску.
В команде используем InfluxDB Listener, для него есть хорошие готовые доски.

Вы хотите чтобы вместо samplerName было три тега:
group.controller.request
поэтому samplerName вы заменяете на group.controller.request:
 templates = [
   "jmeter.test.* measurement..field",
   "jmeter.*.*.*.ok.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.ko.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.a.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.h.count measurement.group.controller.request.field*",
   "jmeter.*.*.*.sb.bytes measurement.group.controller.request.field*",
   "jmeter.*.*.*.rb.bytes measurement.group.controller.request.field*"
 ]
И далее все Sampler называете объектами из трех частей:
Группа1.Контроллер1./api/getDocument (GET)

Но, чтобы простые запросы, в которых простое имя:
/api/getDocument (GET)
также попадали в статистику надо оставить стандартные шаблоны тоже:
 templates = [
   "jmeter.test.* measurement..field",
   "jmeter.*.*.*.ok.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.ko.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.a.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.h.count measurement.group.controller.request.field*",
   "jmeter.*.*.*.sb.bytes measurement.group.controller.request.field*",
   "jmeter.*.*.*.rb.bytes measurement.group.controller.request.field*"

   "jmeter.*.ok.* measurement.request.status.field",
   "jmeter.*.ko.* measurement.request.status.field",
   "jmeter.*.a.* measurement.request.status.field",
   "jmeter.*.h.count measurement.request.field*",
   "jmeter.*.sb.bytes measurement.request.field*",
   "jmeter.*.rb.bytes measurement.request.field*"

 ]

А чтобы запросы, в которых есть только одна точка, вдруг такие будут, попадали в статистику, можно добавить шаблон и для них:
Группа1./api/getDocument (GET)
Для них например можно задать контроллер по умолчанию, пусть он называется none:
 templates = [
   "jmeter.test.* measurement..field",
   "jmeter.*.*.*.ok.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.ko.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.a.* measurement.group.controller.request.status.field",
   "jmeter.*.*.*.h.count measurement.group.controller.request.field*",
   "jmeter.*.*.*.sb.bytes measurement.group.controller.request.field*",
   "jmeter.*.*.*.rb.bytes measurement.group.controller.request.field*"

   "jmeter.*.ok.* measurement.request.status.field",
   "jmeter.*.ko.* measurement.request.status.field",
   "jmeter.*.a.* measurement.request.status.field",
   "jmeter.*.h.count measurement.request.field*",
   "jmeter.*.sb.bytes measurement.request.field*",
   "jmeter.*.rb.bytes measurement.request.field*"

   "jmeter.test.* measurement..field",
   "jmeter.*.*.ok.* measurement.group.request.status.field controller=none",
   "jmeter.*.*.ko.* measurement.group.request.status.field controller=none",
   "jmeter.*.*.a.* measurement.group.request.status.field controller=none",
   "jmeter.*.*.h.count measurement.group.request.field* controller=none",
   "jmeter.*.*.sb.bytes measurement.group.request.field* controller=none",
   "jmeter.*.*.rb.bytes measurement.group.request.field* controller=none"
 ]
Спасибо, посмотрю.
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Viktor Bashkatov
Спасибо, посмотрю.
Плюс Graphite Listener в том, что можно добавлять за счет изменения префиксов/суффиксов Sampler-ов свои динамические теги в статистику. Но минус в том, что надо соблюдать определенный стиль наименования всех Sampler-ов, что сложно на больших проектах, и надо доску почти заново готовить.

И При большом количестве правил и при высокой интенсивности отправки метрик, метрики будут теряться.  Поэтому будет здорово, если везде будет имя Sampler из трех частей и один набор правил в конфиге. Один набор лучше, чем утроенный набор правил в конфиге - это в три раза снизит загрузку CPU на InfluxDB, а для InfluxDB это ценный ресурс. Если в какой-то момент CPU не хватит, то для протокола tcp пакет просто потеряется. А InfluxDB это даже в логе не зафиксирует, он не будет знать что пакет был. Для надежного Graphite endpoint можно поставить перед InfluxDB что-то вида haproxy, чтобы он собирал пакеты у себя в буфере.
источник
2021 February 14

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
👀👀👀Воскресное нашествие
источник

VG

Viktor Ganeles in QA — Load & Performance
Где-то происходит что-то интересненькое.. а мы и не в курсе!
источник

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
Так глядишь скоро наберется по количеству народу так что можно будет нагрузку без инструментария подавать вручную
источник

AG

Alexander Grigoryev in QA — Load & Performance
NoEndOutcry💡🔋🚓 Mikstyraspb(L16+9)
Так глядишь скоро наберется по количеству народу так что можно будет нагрузку без инструментария подавать вручную
Можно будет не нанимать индусов
источник

VG

Viktor Ganeles in QA — Load & Performance
Ребята, вы откуда?
Любопытно ведь :)
источник

EM

Evgeniya Maslennikov... in QA — Load & Performance
В куашном канале каком-то был список куа каналов, которые еще можно почитать на разные темы - и этот в том числе
Привет :)
источник

BV

B V in QA — Load & Performance
Вот отсюдова мы будем 🙂
источник

BV

B V in QA — Load & Performance
Привет, коллеги! Мы решили сделать для вас подборку QA чатов на разные тематики:

@qa_automation - здесь можно обсудить автоматизацию тестирования

@qa_fin - обсуждение денег в нашей сфере

@QA_relocate - а тут собрались трактористы, интересующиеся релокацией :)

@qaFlood - для тех, кто любит пофлудить

@qa_load - про нагрузочное тестирование говорят здесь
источник

VG

Viktor Ganeles in QA — Load & Performance
А, спс
источник

M

Maxim in QA — Load & Performance
Есть такая подборка ссылок на здоровый сон?
источник

VG

Viktor Ganeles in QA — Load & Performance
- доктор, мне так хорошо... что вы мне дали?
- я дал вам выспаться!
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Здорово, автор(ы) @qa_wiki перевели статью по нагрузке с Gatling с интересными иллюстрациями:
https://telegra.ph/Nagruzochnoe-testirovanie-s-Gatling-CHast-1-02-07
источник

NM

NoEndOutcry💡🔋🚓 Mikst... in QA — Load & Performance
ООО! как круто, спасибо!
источник

jj

jagga jagga in QA — Load & Performance
вода
источник

O

Olesya in QA — Load & Performance
Кому интересно, билет на конференцию Podlodka Crew хотят разыграть тут
https://t.me/qa_chillout/85
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
ID:88515352
Добре.
Подскажите, вроде была какая-то команда для #gatling чтобы не запускать тест, а нарисовать в консоли график того, как будут юзеры создаваться?
Привет. Возможно для консольной статистики Gatling будет достаточно его простой статистики, в ней нет графиков, но есть % выполнения и количество запросов. Чтобы ее увидеть надо отключить DEBUG-вывод на консоль с телами ответов и прочей информацией. И тогда в консоли Gatling будет информативный вывод
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Вот этот прогресс
источник
2021 February 15

NK

ID:0 in QA — Load & Performance
#дайджест сообщений чата @qa_load

🔺Каким простым инструментом можно подать 150 RPS? ab, k6, wrk, gatling, siege. Я бы и JMeter посмотрел, чтобы не гадать, как анализировать отчёт новой утилиты

🔺 Как для Yandex.Tank заполнить параметр pandora_cmd, если бинарник pandora находится в корне проекта❓ Вопрос без ответа. Я бы указал полный путь

🔺Как на языке #fluxflux для InfluxDB сделать выборку количества потоков для JMeter и обсуждение самого языка. А выборе между argegateWindow с гибким aggregation_interval и сырыми данными предпочтение у аггрегации, так как Grafana все равно не может отображает на графике больше точек, чем ширина экрана и не отображает время с точностью выше секунды

🔺Как в #GrafanaGrafana не отображать на графике точки со значением больше Y_max при выборке из InfluxDB. Был предложен вариант решения на #fluxflux с промежуточной переменной, в которую сохраняется перцентиль от данных и по нему выполняется фильтрация. Был выбран вариант решения с помощью средств Grafana, исходники которой были изменены 🧐 чтобы поле Y-max оси Y поддерживало переменные

🔹 Ценное замечание по запуску распределенного теста с JMeter, master и агенты должны быть в одной сети.

🔹 Ошибки при открытии jmx-файла, сделанного с нестандартными плагинами JMeter в новом JMeter без плагинов. Такие ошибки - норма. Чтобы их не было можно:
- использовать плагины только с сайта jmeter-plugins.org, тогда их можно будет установить автоматики при открытии JMeter GUI предварительно установив менеджер плагинов;
- хранить архив JMeter со всеми плагинами;
- или использовать jmeter maven plugin и хранить вместе с jmx-файлом pom.xml с описанием нужных зависимостей.

🔹 Запрос, записанный через JMeter Script Recorder, не работает в сценарии, почему так может быть (плюс второе обсуждение на эту же тему):
▫️ код 403: не добавлен HTTP Cookie Manager;
▫️ код 403: нужна аутентификация, ее также надо добавить в сценарии;
▫️ код 403: при записи процесса аутентификации по паролю, пароль записался как ****** или остался пустым, вместо корректного текста пароля;
▫️ код 403: для запроса используется CSRF-токен, который нужно скоррелировать;
▫️ код 500, а иногда 200: запрос нельзя выполнить по другим причинам, например, нельзя удалить объект А, потому что объект Б ссылается на А.

🔹Warning в логе JMeter про NullPointerException - влияет на список последних открытых проектов, появилось в версии 5.4

🔹Консольный запуск JMeter не выполняет запросы, выводит в консоль: summary = 0 in 00:00:00 = ******/s Avg:0 Min: 9223372036854775807 Max: -9223372036854775808 Err:0 (0.00%). Причина была в том, что скрипт не находил файлы для CSV Dataset Config, расположенные в сетевом каталоге, который монтировался, вероятно, при интерактивной RDP-сессии

🔹Как в конфигурационном файле #InfluxDBInfluxDB настроить templates для #GraphiteGraphite Endpoint, чтобы можно было передавать в influxdb три поля: Group, Controller, Request. Можно сделать template на три значения *.*.* а соответствующие теги назвать group.controller.request. Также был предложен вариант не разделять поля на три - оставить одно поле, в котором будут все три значения разделенные пробелом, и использовать регулярные выражения для фильтрации

🔺Вопрос по отправке запросов в сервис внутри #KubernetesKubernetes. Я бы также обратил внимание на статью Exposing an External IP Address to Access an Application in a Cluster

🔸Вопрос по JMESpath в Gatling, как получить первый элемент выборки. Ответ получился как в примере

🔸Как задать javaOptions для Gatling через build.sbt

🔹Вопрос по тестированию #WebSocketWebSocket на .NETCore (#SignalRSignalR) с JMeter. В обсуждении обратили внимание на особый символ-разделитель сообщений, который можно задать лишь через функцию __char

🔹Как в JMeter 5.3+ выключить подсветку кода? Ответ - перейти на тему Windows

📣Конференция по тестированию Heisenbug ищет спикеров!
источник