Size: a a a

QA — Load & Performance

2021 February 13

VG

Viktor Ganeles in QA — Load & Performance
Да и вовсе там узким местом оказался жметер а не кафка :)
источник

A

Anna in QA — Load & Performance
Степа Фомичев
Просто я вот увеличиваю количество потоков, а интенсивность снижается. И либо мне не хватает памяти (так как вся выделенная контейнеру память в работе), либо просто общедоступные сайты, которые я гружу противятся мне антидудосом и повышают времена отклика искусственно
дурацкий вопрос, а такое нельзя проверить, заменив общедоступные сайты дамми сэмплером?
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Степа Фомичев
Господа, дамы, такой не самый простой вопрос возник:
Может ли быть такое, что из-за нехватки памяти треды jmeter станут отправлять запросы с меньшей интенсивностью, вместо out of memory?
Да, может быть. Когда делал бенчмарки для JMeter, то использовал 2-4 потока всего. Большее количество потоков замедляло работу. Но у меня не было таймеров вообще.
источник

СФ

Степа Фомичев... in QA — Load & Performance
Anna
дурацкий вопрос, а такое нельзя проверить, заменив общедоступные сайты дамми сэмплером?
Дамми сэмплер не жрет оперативку так)
источник

СФ

Степа Фомичев... in QA — Load & Performance
Вячеслав Смирнов
Да, может быть. Когда делал бенчмарки для JMeter, то использовал 2-4 потока всего. Большее количество потоков замедляло работу. Но у меня не было таймеров вообще.
Ну это именно из-за оперативки, или просто из-за их (потоков) количества?
источник

VG

Viktor Ganeles in QA — Load & Performance
Степа Фомичев
Ну это именно из-за оперативки, или просто из-за их (потоков) количества?
Я думаю, из-за потоков
Они начинают конкурировать за ресурсы
Таймеров-то нету
источник

СФ

Степа Фомичев... in QA — Load & Performance
А это время должно включаться в респонс таймы, которые отправляет бэкенд лисенер?
источник

СФ

Степа Фомичев... in QA — Load & Performance
По идее нет
источник

VG

Viktor Ganeles in QA — Load & Performance
Степа Фомичев
А это время должно включаться в респонс таймы, которые отправляет бэкенд лисенер?
Кстати.
У славы время отклика было минимальным. Не существенным почти.

А с дамми семплером - как настроишь.

Большие времена отклика, как и таймеры, снижают конкуренцию за ресурсыщ
источник

СФ

Степа Фомичев... in QA — Load & Performance
Не, вот у меня с увеличением количества потоков после какого то порога начинают расти респонс таймы - это же не может быть связано с проблемами на моей стороне (типа, задержки из за гонки за ресурсы между потоками не должны включаться в респонс таймы, по идее?)
источник

VG

Viktor Ganeles in QA — Load & Performance
Степа Фомичев
Не, вот у меня с увеличением количества потоков после какого то порога начинают расти респонс таймы - это же не может быть связано с проблемами на моей стороне (типа, задержки из за гонки за ресурсы между потоками не должны включаться в респонс таймы, по идее?)
Я бы на твоём месте проверил:
Пустил бы нагрузку вдвое меньшим количеством потоков, но с двух нагрузочных станций
источник

VG

Viktor Ganeles in QA — Load & Performance
Потому что может быть всё, что угодно :)
источник

VG

Viktor Ganeles in QA — Load & Performance
И если времена отклика задраны по прежнему - значит большее количество потоков вызывают конкуренцию за ресурсы в объекте тестирования

А если времена отклика снизятся - значит это жметер залагал
источник

VG

Viktor Ganeles in QA — Load & Performance
У нас, кстати, при тестах кафки как раз таки увеличение количества доад генераторов увеличило производительность.

Хотя тесты были из non-gui и ресурсы были потрачены меньше, чем наполовину
источник

VG

Viktor Ganeles in QA — Load & Performance
( @paladen1 я про ресурсы не наврал? )
источник

VG

Viktor Ganeles in QA — Load & Performance
Потому, что без таймеров и очень высокий rps
источник

СФ

Степа Фомичев... in QA — Load & Performance
Я боюсь что у меня с двух станций уменьшится время отклика, если сейчас оно увеличилось из за антидудос механизмов (так как будет два айпишника)
источник

СФ

Степа Фомичев... in QA — Load & Performance
Попробую просто дать х2 оперативки, наверное
источник

D

Denis in QA — Load & Performance
Viktor Ganeles
( @paladen1 я про ресурсы не наврал? )
Не наврал
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Viktor Bashkatov
Коллеги, добрый день! Грузим зибель с помощью JMeter 5.3, пишем данные в InfluxDB 1.8.3.

Нам нужно видеть время выполнения как Transaction Controller'ов, так и запросов внутри них (например, логин состоит из нескольких запросов, и мы хотим знать, какой из них выполнялся слишком долго). Для этого включил Graphite endpoint в конфиге, но не могу до конца понять, как работать с шаблонами.

Хочу писать нечто вроде group.controller.request.measurement, чтобы в графане селектить как по controller, так и по controller.request. Подскажите, пожалуйста, как это реализовать? Читал https://github.com/influxdata/influxdb/blob/1.8/services/graphite/README.md , но не понял, как сделать под мой случай.
Приветствую!
Я использовал вот такие настройки:

[[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"
 ]
источник