Тестирование производительности в Mirth Connect с использованием JMeter

Mirth Connect — это программное обеспечение, предназначенное для обработки потока сообщений, и оно имеет встроенную поддержку, в частности, для обработки сообщений HL7, и поэтому это программное обеспечение широко используется для взаимодействия в приложениях здравоохранения. На протяжении многих лет я видел, как программное обеспечение Mirth испытывает проблемы с производительностью, в основном из-за накопления сообщений с течением времени и в сценариях, когда оно получает большое количество сообщений в быстрой последовательности.

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

Однако в Интернете практически не было информации по этому поводу, поэтому можно использовать JMeter для тестирования Mirth-канала. Команда в Шри-Ланке провела некоторые исследования в этой области еще в 2013 году, и я нашел их выводы и достижения ниже http://pragmatictestlabs.com/2016/10/09/performance-testing-healthcare-application-hl7.-jmeter/

Однако это очень специфично, вывод здесь был объектом JSon, который они извлекли, однако в Mirth у нас могут быть выходные данные в различных формах, и должен быть лучший способ сделать это. Важным выводом из этого является то, что входные данные являются общими, мы можем использовать JMeter для генерации сообщений HL7 и передачи их в Mirth, это здорово, но как получить ответ в целом, было бы идеально, если бы был способ прочитать Mirth Приборная панель через JMeter, вся выходная статистика есть, просто нужно их прочитать.

У меня есть приложение, в котором Мирт читает сообщения HL7 как ADT, так и RDE, создает текстовый файл с соответствующим содержимым и помещает его в общее место. Затем приложение считывает файлы и показывает информацию пользователю.

Здесь я хочу провести два теста производительности. 1. Измерить, сколько времени занимает вся система и как оно меняется в зависимости от нагрузки с момента поступления сообщения до того, как его информация станет доступной пользователю. 2. Измерить, сколько времени занимает канал и как он работает. делает это по мере увеличения нагрузки

Я могу сделать первый, потому что я могу генерировать сообщения HL7, используя JMeter, и я могу заставить JMeter считывать выходные данные в приложении или базе данных. Проблема со вторым, могу ли я сделать это в общем случае. Я искренне ценю ваши предложения и рекомендации, спасибо.


person Chamindra Sulakshith    schedule 08.12.2019    source источник
comment
Меня интересует акцент на JMeter как на инструменте для измерения производительности вашего экземпляра Mirth? Это инструмент, который ваши системные администраторы планируют использовать для мониторинга производительности вашего рабочего экземпляра Mirth, или есть какая-то другая причина, по которой вы хотите использовать JMeter для сбора показателей производительности?   -  person Neils Schoenfelder    schedule 13.12.2019


Ответы (1)


Вы просили совета, поэтому я поделюсь своей общей стратегией тестирования производительности Mirth-каналов. Я подозреваю, что это не будет полным ответом на ваш вопрос, и, возможно, я не скажу вам ничего, чего вы еще не знаете, но я надеюсь, что это поможет вам найти ответ, который вас устроит.

По нескольким причинам старайтесь не тратить слишком много времени на «тестирование всей системы»:

  • Во-первых, тестирование всей системы обязательно включает тестирование низкоуровневой конфигурации, такой как количество ядер ЦП, сетевые карты, используемые в коробке, и программное обеспечение уровня ядра, такое как стек TCP/IP. Обычно у вас нет никакого контроля над этими вещами, поэтому вы не можете их оптимизировать.
  • Во-вторых, производительность всей системы будет сильно зависеть от того, какой вспомогательный код будет выполняться в системе. Если системный администратор решит «улучшить» мой процесс Mirth или использовать этот ящик для размещения SQL-сервера, это повлияет на систему, которую я (опять же) не могу контролировать.
  • В-третьих, и, если честно, я считаю, что «производительность всей системы» — это то, о чем руководство спрашивает во время настройки системы, чтобы они могли получить оценку затрат; но они знают, что получают только оценку. Вы делаете все возможное, чтобы использовать тестовые метрики, чтобы получить хорошее предположение для первоначального выделения оборудования, но все знают, что на самом деле именно производственные показатели производительности будут определять последующие затраты на выделение ресурсов.

Убедитесь, что вы создаете свои каналы для тестирования. Я считаю, что гораздо проще тестировать канал, когда источник и место назначения можно изменить на «Channel Reader» и «Channel Writer» без изменения обработки сообщений. Один из способов взглянуть на это заключается в том, что вы не собираетесь переделывать стек MLLP в Mirth или стек TCP в Java, поэтому просто исключите эти вещи из своего тестирования.

Я храню источник полезных тестовых сообщений. У меня есть пара файлов на сетевом диске, содержащих около сотни сообщений, проверяющих неприятные пограничные случаи, с которыми я сталкивался на протяжении многих лет на своих интерфейсах HL7. Я написал небольшой канал Mirth, который считывает их из файла и выдает копии так быстро, как только может. Включив «Очередь» на стороне назначения этого канала, я могу поставить в очередь огромное количество тестовых сообщений, которые готовы отправить на канал, который я хочу протестировать. В прошлом я тратил время на создание тестового интерфейса, который действовал как фальшивый EMR, чтобы выдавать случайно созданные сообщения, но, похоже, не было никакого преимущества перед простым выбрасыванием копий тех же сообщений из моих тестовых файлов.

Наконец, и это наиболее важно, очень важно измерять производительность тестового экземпляра с помощью тех же показателей, которые вы будете использовать для измерения производительности рабочего экземпляра. Если единственная производственная метрика, о которой вы заботитесь, — это «сообщений в секунду», то это то, что вам нужно измерить на тестовом блоке. Если объем памяти вызывает беспокойство в производственной среде, вам также необходимо измерить использование памяти в тестовой среде. Когда вы вносите изменения в свой тестовый экземпляр, которые уменьшают важную метрику на 10 %, вам нужно убедиться, что ваше руководство знает об этом, прежде чем внедрять это изменение в рабочую среду.

Обратите внимание, что получить некоторые из этих показателей может быть сложно, поскольку Mirth не включает в себя хороших инструментов для мониторинга собственной производительности. Приборная панель Mirth — это хорошее место, чтобы следить за ошибками или сбоями, но это не лучшее место для поиска данных о производительности. Во время тестирования я удостоверяюсь, что использую любой инструмент мониторинга ресурсов, который системные администраторы будут использовать для мониторинга производительности рабочего экземпляра. Кроме того, я использую ручной процесс для проверки производительности: если я хочу подсчитать количество сообщений в секунду, я отправляю пакет сообщений и смотрю временные метки первого и последнего сообщений. Если я хочу получить представление о загрузке ЦП канала Mirth, я использую монитор производительности Windows или команду posix 'top'.

person Neils Schoenfelder    schedule 13.12.2019
comment
Привет Нилс, Спасибо за ваш ответ. На самом деле мои показатели до сих пор были в тестировании производительности Mirth, количество сообщений в секунду и время, необходимое каналу для обработки большого количества сообщений. В настоящее время, когда мне нужно протестировать канал Mirth на производительность, я меняю источник на средство чтения файлов и меняю место назначения на средство записи файлов, и я переношу в исходную папку образцы файлов. Эти файлы иногда представляют собой файлы HL7, XML и иногда текстовые файлы в зависимости от канала. - person Chamindra Sulakshith; 15.12.2019
comment
Затем я смотрю на панель инструментов Mirth, чтобы увидеть, когда был прочитан первый файл, и посмотреть, когда был обработан последний файл, и, таким образом, вывести некоторую статистику. Я знаю, что статистика, которую я получаю таким образом, может быть не совсем точной, а результаты часто вызывают сомнения и ставятся под сомнение, поскольку тесты выполняются вручную. Если JMeter можно будет эффективно использовать для тестирования Mirth, статистика тестирования будет более достоверной. - person Chamindra Sulakshith; 15.12.2019