当前位置: 首页 > 知识库问答 >
问题:

使用JMeter在Mirth Connect中进行性能测试

曾云
2023-03-14

happy Connect是一款设计用于处理消息流的软件,它内置了对HL7消息的支持,因此该软件广泛用于医疗保健应用中的接口。这些年来,我已经看到了一些欢笑软件遇到的性能问题,主要是由于消息随着时间的推移而增加,以及在它连续接收大量消息的情况下。

Mirth具有基于通道的架构,如果有某种方法可以对Mirth通道进行性能测试并获得JMeter的性能统计信息,那么这是理想的选择。通过这种方式,我们可以收集必要的信息来优化通道变压器,并相应地设置吹扫例程。

然而,在互联网上,几乎没有关于这个领域的信息,这就是人们如何使用JMeter来测试Mirth信道的方式。早在2013年,斯里兰卡的一个团队就对这一领域进行了一些研究,我发现他们的发现和成就低于 http://pragmatictestlabs.com/2016/10/09/performance-testing-healthcare-application-hl7-jmeter/

然而,这是非常具体的,这里的输出是他们提取的JSon对象,然而,在欢笑中,我们可以有各种形式的输出,需要有一个更好的方法来做到这一点。一个重要的收获是输入,即输入是通用的,我们可以使用JMeter生成HL7消息,并将它们传递给happy,这很好,但如何捕捉响应一般来说,如果有一种方法可以通过JMeter读取happy仪表板,那将是理想的,所有的输出统计数据都在那里,只是读取它们的问题。

我有一个应用程序,其中Mirth读取HL7消息ADT和RDE,并相应地创建一个包含适当内容的文本文件,然后将其放到共享位置。然后应用程序读取文件并向用户显示信息。

我希望在这里做两个性能测试

  1. 测量整个系统花费的时间,以及从消息到达到用户可用其信息,系统如何随负载而变化
  2. 测量通道花费的时间以及随着负载的增加,通道如何完成

我可以做第一个,因为我可以使用JMeter生成HL7消息,我可以让JMeter读取应用程序或数据库中的输出。第二个问题是,我能不能用一种通用的方式。

共有1个答案

云正信
2023-03-14

你问我的建议,所以我将分享我的性能测试欢乐频道的一般策略。我怀疑这不会是你问题的完整答案,我可能不会告诉你任何你不知道的事情,但我希望这将帮助你找到一个你满意的答案。

出于几个原因,尽量不要花太多时间“测试完整的系统”:

  • 首先,测试整个系统必然包括测试低级配置,如CPU内核的数量,盒子中使用的NIC,以及内核级软件,如TCP / IP堆栈。您通常无法控制这些事情,因此您无法以任何方式优化它们。
  • 其次,整个系统的性能将在很大程度上取决于盒子上运行的任何辅助代码。如果系统管理员决定“完善”我的 Mirth 进程,或者使用该框来托管 SQL 服务器,这将对我(再次)无法控制的系统产生影响。
  • 第三,也是最坦率地说,我发现“整个系统的性能”是管理层在系统设置过程中询问的问题,以便他们可以获得成本估算,但他们知道他们只得到一个估计。你最好使用测试指标来对初始硬件预配进行很好的猜测,但每个人都知道,实际上生产性能指标将推动以后的预配成本。

确保您构建了可测试性通道。我发现,当源和目标可以更改为“channel Reader”和“channel Writer”而不更改消息处理时,测试通道要容易得多。一种看待这一点的方法是,您不会彻底检查Mirth的MLLP堆栈或Java的TCP堆栈,所以只需将这些内容从测试中删除即可。

我保存了一个有用的测试消息源。我在一个网络驱动器上有几个文件,其中有大约100条消息,用于测试我多年来在HL7接口上遇到的恶劣边缘情况。我写了一个小的欢乐频道,从文件中读取这些内容,并尽可能快地输出副本。通过在该通道的目标端打开“排队”,我可以将数以亿计的测试消息排队,这些消息已准备好发送到我要测试的通道。在过去,我花时间构建了一个测试接口,它像一个假EMR一样,发出随机构造的消息,但与从我的测试文件中发出相同消息的副本相比,似乎没有任何优势。

最后,也是最重要的一点,使用与衡量生产实例性能相同的指标来衡量测试实例的性能是至关重要的。如果您唯一关心的生产指标是“每秒消息数”,那么这就是您需要在测试盒上衡量的。如果内存占用是生产中的一个问题,那么您也需要衡量测试环境中的内存使用情况。当您对测试实例进行更改时,将一个重要指标减少了10%,您需要确保您的管理层在将更改推送到生产环境之前已经意识到这一点。

请注意,获取其中一些指标可能很棘手,因为Mirth不包含监控其自身性能的好工具。Mirth仪表板是关注错误或崩溃的好地方,但它不是查找性能数据的好地方。在测试期间,我确保使用系统管理员将使用的任何资源监控工具来监控生产实例的性能。除此之外,我使用手动过程来测试性能:如果我想每秒计算消息,我会发送一批消息,并查看第一条和最后一条消息的时间戳。如果我想了解Mirth通道的CPU负载,我使用Windows性能监视器或posix“top”命令。

 类似资料:
  • 我想进行压力测试,从预期的用户数开始(或从1个虚拟用户开始),然后逐渐增加负载,例如10个线程、20个线程等等…。100个线程,直到响应时间开始超过可接受的值或开始出现错误。但是对于所有这些测试运行,我应该增加爬升周期(秒),还是所有测试都保持不变?图片如下:

  • 我正在尝试测试一个KnoxToken服务背后的应用程序,用户需要使用智能卡和他的PIN。使用JMeter来测试没有安全特性的应用程序,效果和预期的一样。 在这种情况下,我得到一个错误:javax . net . SSL . SSL handshakeexception:远程主机在握手期间关闭了连接 从Jmeter- 从日志文件:

  • 监控可伸缩性和性能的两个简单测试 在应用程序的开发周期中,性能测试常被放到最后考虑,这并不是因为它不重要,而是因为存在这么多未知变量,很难有效地测试。在本月的 追求代码质量 系列中,Andrew Glover 使性能测试成为开发周期的一部分,并介绍了两种简单的实现方法。 在应用程序的开发中,验证应用程序的性能几乎总处于次要的地位。请注意,我强调的是验证 应用程序的性能。应用程序的性能总是 首要考虑

  • 问题陈述:我有一个“成功登录网页”的简单测试。此测试将使用100个不同的用户名和密码进行。要求是测试应该同时使用100个用户名访问服务器。 信息:我们是否必须使用selenium grid或RC或简单的WebDriver,我们可以自由使用任何。读取用户名 这可能吗? 我们如何才能实现这一点?

  • 我尝试使用我的计算机作为客户端/主服务器和EC2实例作为从属开始远程测试,我实现了所有这些要点: < li >禁用主服务器和从服务器上的防火墙。 < li >我在主机和从机上安装了相同版本的java和JMeter。 我已经将所有通信设置为通过端口4000。 我的主服务器配置: 远程主机=10.xx.xx.xxx 服务器端口=4000 server.rmi.port=4000 server.rmi.

  • 我是一个新手在jeter工具。我想测试登录到一个asp.net网站。但是我在网上搜索了2天后没有成功。 我在下面列出了我遵循的步骤: > 添加一个。 添加一个。 为EVENTVALIDATION和VIEWSTATE添加两个正则表达式提取器。 添加HTTP URL重写修改器与(检查和)。 有两个页面,一个是,另一个是。在Login Post Page中,我添加了以下参数: 用户名: __EVENTV