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

Фотография

Синхронизация действий


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

#1 nik_o

nik_o

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Николай
  • Город:Одесса


Отправлено 17 февраля 2012 - 15:07

Суть проблемы такая:
Есть Web Application которое размещается на двух серверах: 1 и 2.
В ThreadGroup реализован основной сценарий нагрузки сервера 1. Сценарий запускает 250 пользователей на сервер, которые выполняют определённые
действия на сервере. (Сценарий реализован и работает нормально)

Необходимо:
При начале работы основного сценария, создать и открыть на запись csv файл. В него будут записываться результаты запроса который будет отправляться серверу 2
с периодичностью в 1 секунду. Когда основной сценарий завершит свою работу необходимо сохранить и закрыть данный файл.

Как создать, открыть, писать в файл, сохранить и закрыть его я знаю. Это тоже реализовано (пока в отдельном ThreadGroup), в том же тест-плане что и основной сценарий.
Но вот как синхронизировать работу между этими двумя группами, пока не знаю. Точнее необходимо начать запись в файл при старте первого пользователя и прекратить
запись после выхода последнего.

Здесь встречал похожую тему, но решения предложенные там (использование TestAction) мне не подходит, хотя суть проблемы похожа.

Прошу помочь, советом, а лучше примером.
Если что-то не понятно описал, спрашивайте, буду дополнять. Сам решить вопрос пока не могу.

Спасибо. Жду Ваших предложений и идей.
  • 0

#2 Izaboo

Izaboo

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

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Izaboo

Отправлено 17 февраля 2012 - 16:21

Может Synchronizing Timer поможет?
  • 0

#3 nik_o

nik_o

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Николай
  • Город:Одесса


Отправлено 20 февраля 2012 - 07:30

Может Synchronizing Timer поможет?


А можно примерчик?
  • 0

#4 nik_o

nik_o

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Николай
  • Город:Одесса


Отправлено 21 февраля 2012 - 12:47

Неужели нет спецов кто помог бы решить эту проблему?
Народ, очень нужна Ваша помощь.
  • 0

#5 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 22 февраля 2012 - 05:22

Здравствуйте.Честно говоря, мне не очень понятна суть проблемы. Задам несколько вопросов.

Вы пишете

Суть проблемы такая:
Сценарий реализован и работает нормально

Необходимо:
При начале работы основного сценария, создать и открыть на запись csv файл. .... Когда основной сценарий завершит свою работу необходимо сохранить и закрыть данный файл.


При этом

Как создать, открыть, писать в файл, сохранить и закрыть его я знаю.



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


Что Вы понимаете в данном случае под синхронизацией? Почему не реализовали работу с файлом в той же threadgroup, где идет получение ответа.


Здесь встречал похожую тему, но решения предложенные там (использование TestAction) мне не подходит, хотя суть проблемы похожа.


Почему Вам это не подошло?

Если у Вас есть возможность набросать пример вашего теста, заменив реальные запросы DummySampler, то выложите его, пожалуйста



  • 0

#6 fesd

fesd

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

  • Members
  • PipPipPipPip
  • 262 сообщений

Отправлено 22 февраля 2012 - 08:16

Я понял суть проблемы.
Как вариант можно сделать следующее. Во второй тред группе(которая работает с файлом) всё положить в один while controller c условием ${__BeanShell(org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads()!=1)}
Таким образом сценарий у нас будет следующий:

2 тред группа делает свои дела в один тред.
Таким образом, как только все треды первой тред группы отработают, счетчик org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads() будет = 1( так как один тред во второй тред группе крутится. Соответственно, условие не выполнится и тред закончит свою работу.

Прикрепляю пример сценария ( нужно сменить расширение файла .rar на .jmx)
Сценарий сделан в последней версии жметра 2.6 с прикрученными последними jmeter-plugins.

Прикрепленные файлы

  • Прикрепленный файл  sample.rar   6,01К   14 Количество загрузок:

  • 1

#7 nik_o

nik_o

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Николай
  • Город:Одесса


Отправлено 22 февраля 2012 - 08:27

Я понял суть проблемы.
Как вариант можно сделать следующее. Во второй тред группе(которая работает с файлом) всё положить в один while controller c условием ${__BeanShell(org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads()!=1)}
Таким образом сценарий у нас будет следующий:

2 тред группа делает свои дела в один тред.
Таким образом, как только все треды первой тред группы отработают, счетчик org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads() будет = 1( так как один тред во второй тред группе крутится. Соответственно, условие не выполнится и тред закончит свою работу.

Прикрепляю пример сценария ( нужно сменить расширение файла .rar на .jmx)
Сценарий сделан в последней версии жметра 2.6 с прикрученными последними jmeter-plugins.



Кажется это то что мне нужно. Сейчас буду пробовать. Спасибо за ответ. Позже отпишусь.

Если у Вас есть возможность набросать пример вашего теста, заменив реальные запросы DummySampler, то выложите его, пожалуйста


Если после этой попытки проблема не решится, то выложу сценарий на рассмотрение.
  • 0

#8 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 22 февраля 2012 - 08:35

Необходимо, пока идёт нагрузочное тестирование одного
сервера, со второго снимать статистику и писать её в файл.


Так намного понятнее.

Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer.
  • 0

#9 nik_o

nik_o

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Николай
  • Город:Одесса


Отправлено 22 февраля 2012 - 11:00

Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer


Мне что-то не совсем понятно как используя Flexible File Writer мне записать в файл статистику полученную через HTTP запрос? Может я то-то неправильно понял?
  • 0

#10 nik_o

nik_o

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Николай
  • Город:Одесса


Отправлено 22 февраля 2012 - 11:04

Я понял суть проблемы.
Как вариант можно сделать следующее. Во второй тред группе(которая работает с файлом) всё положить в один while controller c условием ${__BeanShell(org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads()!=1)}
Таким образом сценарий у нас будет следующий:

2 тред группа делает свои дела в один тред.
Таким образом, как только все треды первой тред группы отработают, счетчик org.apache.jmeter.threads.JMeterContextService.getNumberOfThreads() будет = 1( так как один тред во второй тред группе крутится. Соответственно, условие не выполнится и тред закончит свою работу.

Прикрепляю пример сценария ( нужно сменить расширение файла .rar на .jmx)
Сценарий сделан в последней версии жметра 2.6 с прикрученными последними jmeter-plugins.


Чёрт побери!!!!! Это оказалось очень просто и действенно. Спасибо, работает именно так как мне надо было.

P.S. Немного не в тему. Я так понимаю, таким способом можно вызывать различные методы определённые в JMeter. Я правильно понял?
Или есть какие-то ограничения на это (ну понятно что метод должен быть public)
  • 0

#11 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 22 февраля 2012 - 11:15

Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer


Мне что-то не совсем понятно как используя Flexible File Writer мне записать в файл статистику полученную через HTTP запрос? Может я то-то неправильно понял?


Об этом написано вот тут: FFWTutorials
  • 0

#12 nik_o

nik_o

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Николай
  • Город:Одесса


Отправлено 23 февраля 2012 - 09:32


Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer


Мне что-то не совсем понятно как используя Flexible File Writer мне записать в файл статистику полученную через HTTP запрос? Может я то-то неправильно понял?


Об этом написано вот тут: FFWTutorials


Да, да, да! Я уже увидел. Спасибо. Отписался раньше чем дочитал. :)
В принципе (я не пробовал, но обязательно попробую) Ваш вариант
тоже подходит. Я почему-то не додумался до этого (наверное из-за того
что на дочитал FFWTutorials )


Всем огромное спасибо. Тема может быть закрыта.

P.S.: Если кому-то, что-то понадобится от меня по этому вопросу, пишите.
Обязательно отвечу.
  • 0


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

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