Синхронизация действий
#1
Отправлено 17 февраля 2012 - 15:07
Есть Web Application которое размещается на двух серверах: 1 и 2.
В ThreadGroup реализован основной сценарий нагрузки сервера 1. Сценарий запускает 250 пользователей на сервер, которые выполняют определённые
действия на сервере. (Сценарий реализован и работает нормально)
Необходимо:
При начале работы основного сценария, создать и открыть на запись csv файл. В него будут записываться результаты запроса который будет отправляться серверу 2
с периодичностью в 1 секунду. Когда основной сценарий завершит свою работу необходимо сохранить и закрыть данный файл.
Как создать, открыть, писать в файл, сохранить и закрыть его я знаю. Это тоже реализовано (пока в отдельном ThreadGroup), в том же тест-плане что и основной сценарий.
Но вот как синхронизировать работу между этими двумя группами, пока не знаю. Точнее необходимо начать запись в файл при старте первого пользователя и прекратить
запись после выхода последнего.
Здесь встречал похожую тему, но решения предложенные там (использование TestAction) мне не подходит, хотя суть проблемы похожа.
Прошу помочь, советом, а лучше примером.
Если что-то не понятно описал, спрашивайте, буду дополнять. Сам решить вопрос пока не могу.
Спасибо. Жду Ваших предложений и идей.
#2
Отправлено 17 февраля 2012 - 16:21
#3
Отправлено 20 февраля 2012 - 07:30
Может Synchronizing Timer поможет?
А можно примерчик?
#4
Отправлено 21 февраля 2012 - 12:47
Народ, очень нужна Ваша помощь.
#5
Отправлено 22 февраля 2012 - 05:22
Вы пишете
Суть проблемы такая:
Сценарий реализован и работает нормально
Необходимо:
При начале работы основного сценария, создать и открыть на запись csv файл. .... Когда основной сценарий завершит свою работу необходимо сохранить и закрыть данный файл.
При этом
Как создать, открыть, писать в файл, сохранить и закрыть его я знаю.
Но вот как синхронизировать работу между этими двумя группами, пока не знаю.
Что Вы понимаете в данном случае под синхронизацией? Почему не реализовали работу с файлом в той же threadgroup, где идет получение ответа.
Здесь встречал похожую тему, но решения предложенные там (использование TestAction) мне не подходит, хотя суть проблемы похожа.
Почему Вам это не подошло?
Если у Вас есть возможность набросать пример вашего теста, заменив реальные запросы DummySampler, то выложите его, пожалуйста
#6
Отправлено 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.
Прикрепленные файлы
#7
Отправлено 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, то выложите его, пожалуйста
Если после этой попытки проблема не решится, то выложу сценарий на рассмотрение.
#8
Отправлено 22 февраля 2012 - 08:35
Необходимо, пока идёт нагрузочное тестирование одного
сервера, со второго снимать статистику и писать её в файл.
Так намного понятнее.
Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer.
#9
Отправлено 22 февраля 2012 - 11:00
Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer
Мне что-то не совсем понятно как используя Flexible File Writer мне записать в файл статистику полученную через HTTP запрос? Может я то-то неправильно понял?
#10
Отправлено 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)
#11
Отправлено 22 февраля 2012 - 11:15
Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer
Мне что-то не совсем понятно как используя Flexible File Writer мне записать в файл статистику полученную через HTTP запрос? Может я то-то неправильно понял?
Об этом написано вот тут: FFWTutorials
#12
Отправлено 23 февраля 2012 - 09:32
Давайте попробуем следующее. В "ThreadGroup статистики" реализуем запись в файл при помощи Flexible File Writer. В "нагружаемую ThreadGroup" добавим TestAction, который после завершения нагрузки остановит весь тест, включая Flexible File Writer
Мне что-то не совсем понятно как используя Flexible File Writer мне записать в файл статистику полученную через HTTP запрос? Может я то-то неправильно понял?
Об этом написано вот тут: FFWTutorials
Да, да, да! Я уже увидел. Спасибо. Отписался раньше чем дочитал. :)
В принципе (я не пробовал, но обязательно попробую) Ваш вариант
тоже подходит. Я почему-то не додумался до этого (наверное из-за того
что на дочитал FFWTutorials )
Всем огромное спасибо. Тема может быть закрыта.
P.S.: Если кому-то, что-то понадобится от меня по этому вопросу, пишите.
Обязательно отвечу.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных