Вопрос

У нас есть простой процесс тестирования производительности в приложении.

  1. Мы входим в систему
  2. Поиск на основе некоторых критериев
  3. повторите поиск по другим параметрам.

Мы используем Jmeter для тестирования производительности.Нам нужно запустить несколько потоков, чтобы протестировать это масштабируемым образом.

То, как мы в настоящее время это устроили, таково:

-Test Plan
  - Thread Group
      - Cookie Manager
      - Login To application
      - Search on param 1
      - Search on param 2
  - results summary table
  - Summary report

Таким образом, в основном у нас есть сводная таблица возврата и отчет, присутствующие на уровне плана, в то время как менеджер файлов cookie присутствует на уровне группы потоков.

Когда я запускаю один поток, он работает нормально и завершается хорошо.Когда я масштабирую его до нескольких потоков, как только запускается следующий поток, сеанс для последнего потока становится недействительным.Это приводит к сбоям для всех уже запущенных потоков из-за вновь созданного потока.

Я достиг этого результата с помощью наблюдения:
1.Если я запускаю несколько потоков, только последний поток получил действительные ответы в сводном дереве результатов
2.Если я запускаю с 2 потоками с периодом нарастания в 10 секунд, что означает, что каждый поток получает время для завершения самого себя, то оба они запускаются успешно.

Насколько я понимаю, каждый поток входит в приложение, и поскольку диспетчер файлов cookie находится на уровне потока, значения будут сохраняться для идентификатора сеанса для каждого потока соответственно?Но что вызывает переопределение значения идентификатора сеанса между потоками?

Любая помощь будет высоко оценена.

Это было полезно?

Решение

Скопировано из документации jmeter:

Последним элементом является HTTP Cookie Manager .Менеджер файлов cookie должен быть добавлен ко всем веб-тестам - в противном случае JMeter будет игнорировать файлы cookie. Добавляя это на уровне группы потоков, мы гарантируем, что все HTTP-запросы будут использовать одни и те же файлы cookie.

Из главы "4.2.2 Логические контроллеры" в http://jmeter.apache.org/usermanual/test_plan.html.

Редактировать:Я думаю, вам следует использовать http://jmeter.apache.org/usermanual/component_reference.html#Simple_Controller чтобы сгруппировать ваши запросы вместе с менеджером файлов cookie.

Другие советы

Я думаю, что ответ Андрея не сможет помочь.Он цитирует, что каждый запрос будет использовать одни и те же файлы cookie, НО согласно руководству jmeter:

Каждый поток JMeter имеет свою собственную «область хранения файлов cookie».

Насколько я понимаю вопрос, вы хотите, чтобы каждый поток использовал один и тот же файл cookie с идентификатором сеанса.Мне кажется, вам нужно иметь две группы потоков и выполнять их последовательно.Первая группа потоков (с одним потоком, который выполняется только один раз) должна войти в систему и сохранить значение файла cookie сеанса в глобальном параметре (возможно, вам нужно использовать возможности сценариев jmeter).Затем установите этот файл cookie в диспетчере файлов cookie второй группы потоков.

Надеюсь, это поможет.

Попробуйте увеличить время разгона.Я столкнулся с той же проблемой: время нарастания составляло около 1 секунды, затем я увеличил его до 3 секунд на поток, и все работало нормально.

Попробуй это:

Откройте user.properties, присутствующий в папке bin JMeter.

Отредактируйте его и добавьте следующую строку:

CookieManager.check.cookies=false

Сохраните его и запустите скрипт.Я надеюсь, что это решит вашу проблему.

Сначала измените свой код на:

jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_

Затем добавьте диспетчер файлов cookie HTTP в ту же группу потоков, что и ваш сэмплер Java.

Затем в ваш Java-сэмплер добавьте:

JMeterVariables jmv = JMeterContextService.getContext().getVariables();
Iterator<Map.Entry<String,Object>> it = jmv.getIterator();
while(it.hasNext()){
    Map.Entry<String,Object> v = it.next();
    System.out.println("name: " + v.getKey() + " value: " + v.getValue());
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top