Построить зависимость глобального параметра (для всех потоков) от лока
#1
Отправлено 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.
Вот бьюсь над задачей, как изменить параметр для всех потоков сразу? Есть предложения?
#2
Отправлено 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 ?
#3
Отправлено 15 июня 2012 - 12:48
Пока сделал workround: CSV Data Set - сгенерил файл на perl "каждый" с "каждым" - размер более 1 Гб.
#4
Отправлено 16 июня 2012 - 06:55
Да, уже начал разбираться с дополнением, спасибо.
Пока сделал workround: CSV Data Set - сгенерил файл на perl "каждый" с "каждым" - размер более 1 Гб.
На самом деле может подойти трюк попроще - использовать префикс в цифре - число ${__threadNum}. Это даст уникальность между тредами, у каждого будет свой префикс. Лучше попробуйте в эту сторону, чем городить межтредовое взаимодействие.
Андрей Похилько
#5
Отправлено 18 июня 2012 - 07:12
Это хорошее решение, но поле, в котором инкрементируется счетчик в системе ограничено 6 разрядами (знаками). Пока подумаю, как сделать эффективнее в моем случае.На самом деле может подойти трюк попроще - использовать префикс в цифре - число ${__threadNum}. Это даст уникальность между тредами, у каждого будет свой префикс. Лучше попробуйте в эту сторону, чем городить межтредовое взаимодействие.
#6
Отправлено 19 июня 2012 - 11:18
Только сегодня получилось добрался до скриптов нагрузки, опробавал варианты.
Решение с переменной ${__threadNum} оказалось простым, быстрым и эффективным! Спасибо. Всё получилось.
Единственный "маленкий минус" к "большому плюсу" - counter не будет использовать весь свой диапазон значений, если кол-во потоков отличается от 9, 99, 999, и т.д. Но это действительно не так важно в моей ситуации.
Попытался поработать с межпотоковым взаимодействием - в одном Thread group он не срабатывает. Надо прорабатывать схемы посложнее для реализации алгоритмов нагрузки. При этом читаемость алгоритма нагрузки для сопровождения и объяснения несколько усложняется.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных