Перейти к содержимому

Фотография

Построить зависимость глобального параметра (для всех потоков) от лока


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Vasily

Vasily

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Василий Щербатов

Отправлено 15 июня 2012 - 10:20

Добрый день!

Нужен совет по параметризации SOAP Request в Jmeter. Кажеться, что может быть проще? но вот уже второй день бьюсь, но пока не получилось...

В проекте есть счетчик(counter) от 1..999999, инкремент =1. Преодолевая отметку в 999999, счетчик возвращается к начальному значению =1 и Jmeter продолжает генерить нагрузку. Но в системе, кот. нагружаем, есть ограничение уникальности, и после преодолевания отметки счетчиком, запрос становиться не уникальным в системе. Counter общий на 1000 потоков(кол-во потоков значения не имеет, главное N>=2).

Но есть возможность создать уникальность запроса в системе двумя параметрами. (это и есть цель)

Необходимо при достижении счетчика 999999 в одном из потоков, сразу после этого изменить значение второго параметра для всех потоков на следующее.

Пытался строить логическую структуру (If controller), игрался с PreProcessors->User Parameters, PostProcessor->BeanShel PostProcessor; но все, что ни пробовал срабатывало корректно только для одного потока, на котором мы достигли значения счетчика 999999.

Вот бьюсь над задачей, как изменить параметр для всех потоков сразу? Есть предложения?
  • 0

#2 yugene

yugene

    Новый участник

  • Members
  • Pip
  • 25 сообщений


Отправлено 15 июня 2012 - 11:35

Добрый день!

Нужен совет по параметризации SOAP Request в Jmeter. Кажеться, что может быть проще? но вот уже второй день бьюсь, но пока не получилось...

В проекте есть счетчик(counter) от 1..999999, инкремент =1. Преодолевая отметку в 999999, счетчик возвращается к начальному значению =1 и Jmeter продолжает генерить нагрузку. Но в системе, кот. нагружаем, есть ограничение уникальности, и после преодолевания отметки счетчиком, запрос становиться не уникальным в системе. Counter общий на 1000 потоков(кол-во потоков значения не имеет, главное N>=2).

Но есть возможность создать уникальность запроса в системе двумя параметрами. (это и есть цель)

Необходимо при достижении счетчика 999999 в одном из потоков, сразу после этого изменить значение второго параметра для всех потоков на следующее.

Пытался строить логическую структуру (If controller), игрался с PreProcessors->User Parameters, PostProcessor->BeanShel PostProcessor; но все, что ни пробовал срабатывало корректно только для одного потока, на котором мы достигли значения счетчика 999999.

Вот бьюсь над задачей, как изменить параметр для всех потоков сразу? Есть предложения?


Как насчёт http://code.google.c...adCommunication ?
  • 0

#3 Vasily

Vasily

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Василий Щербатов

Отправлено 15 июня 2012 - 12:48

Да, уже начал разбираться с дополнением, спасибо.

Пока сделал workround: CSV Data Set - сгенерил файл на perl "каждый" с "каждым" - размер более 1 Гб.
  • 0

#4 APC

APC

    Опытный участник

  • Members
  • PipPipPipPip
  • 293 сообщений
  • ФИО:Похилько Андрей Федорович
  • Город:Москва


Отправлено 16 июня 2012 - 06:55

Да, уже начал разбираться с дополнением, спасибо.

Пока сделал workround: CSV Data Set - сгенерил файл на perl "каждый" с "каждым" - размер более 1 Гб.


На самом деле может подойти трюк попроще - использовать префикс в цифре - число ${__threadNum}. Это даст уникальность между тредами, у каждого будет свой префикс. Лучше попробуйте в эту сторону, чем городить межтредовое взаимодействие.
  • 0

#5 Vasily

Vasily

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Василий Щербатов

Отправлено 18 июня 2012 - 07:12

На самом деле может подойти трюк попроще - использовать префикс в цифре - число ${__threadNum}. Это даст уникальность между тредами, у каждого будет свой префикс. Лучше попробуйте в эту сторону, чем городить межтредовое взаимодействие.

Это хорошее решение, но поле, в котором инкрементируется счетчик в системе ограничено 6 разрядами (знаками). Пока подумаю, как сделать эффективнее в моем случае.
  • 0

#6 Vasily

Vasily

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Василий Щербатов

Отправлено 19 июня 2012 - 11:18

APC
Только сегодня получилось добрался до скриптов нагрузки, опробавал варианты.

Решение с переменной ${__threadNum} оказалось простым, быстрым и эффективным! Спасибо. Всё получилось.
Единственный "маленкий минус" к "большому плюсу" - counter не будет использовать весь свой диапазон значений, если кол-во потоков отличается от 9, 99, 999, и т.д. Но это действительно не так важно в моей ситуации.

Попытался поработать с межпотоковым взаимодействием - в одном Thread group он не срабатывает. Надо прорабатывать схемы посложнее для реализации алгоритмов нагрузки. При этом читаемость алгоритма нагрузки для сопровождения и объяснения несколько усложняется.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных