【问题标题】:Performance Testing in Mirth Connect Using JMeter使用 JMeter 在 Mirth Connect 中进行性能测试
【发布时间】:2020-04-01 19:35:11
【问题描述】:

Mirth Connect 是一款设计用于处理消息流的软件,它内置支持特别是处理 HL7 消息,因此该软件广泛用于医疗保健应用程序的接口。多年来,我看到 Mirth 软件遇到性能问题,主要是由于消息随着时间的推移而积累,并且在它快速连续接收大量消息负载的情况下。

Mirth 有一个基于通道的架构,如果我们可以通过某种方式对 Mirth 通道进行性能测试并获取 JMeter 的性能统计数据,那么它是理想的选择。借此我们可以收集必要的信息来优化通道转换器并相应地设置清除程序。

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

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

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

我希望在这里做两个性能测试 1. 测量整个系统需要多少时间,以及从消息到达到用户可以使用它的信息,它是如何随负载变化的 2. 测量通道花费了多少时间以及随着负载的增加它是如何完成的

我可以做第一个,因为我可以使用 JMeter 生成 HL7 消息,并且我可以让 JMeter 读取应用程序或数据库中的输出。问题在于第二个,我可以用一般的方式做到这一点。衷心感谢您的建议和指导,谢谢。

【问题讨论】:

  • 我很好奇强调 JMeter 作为衡量 Mirth 实例性能的工具?这是您的系统管理员计划用来监控生产 Mirth 实例性能的工具,还是您想使用 JMeter 收集性能指标的其他原因?

标签: jmeter performance-testing qa mirth


【解决方案1】:

您要求提供建议,因此我将分享我对 Mirth 频道进行性能测试的一般策略。我怀疑这不会是您问题的完整答案,而且我可能不会告诉您任何您不知道的事情,但我希望这会帮助您找到您满意的答案。

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

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

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

保留有用的测试消息来源。我在网络驱动器上有几个文件,其中包含大约一百条消息,用于测试我多年来在 HL7 接口上遇到的讨厌的边缘情况。我编写了一个小型 Mirth 频道,它从文件中读取这些内容并尽可能快地输出副本。通过在该通道的目标端打开“排队”,我可以将准备发送到我要测试的通道的大量测试消息排队。过去,我花时间构建了一个测试界面,它就像一个假的 EMR 来吐出随机构建的消息,但与从我的测试文件中吐出相同消息的副本相比,似乎没有任何优势。

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

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

【讨论】:

  • 您好尼尔斯,谢谢您的回答。实际上,到目前为止,我的指标是在 Mirth 性能测试、每秒消息数和通道处理大量消息所需的时间。目前,当我需要测试 Mirth 通道的性能时,我将源更改为文件阅读器,并将目标更改为文件写入器,然后将示例文件放到源文件夹中。这些文件有时是 HL7、XML,有时是文本文件,具体取决于频道。
  • 然后我查看 Mirth 仪表板以查看第一个文件何时被读取并查看最后一个文件何时被处理,从而推断出一些统计数据。我知道我以这种方式得出的统计数据可能并不完全准确,并且由于手动完成测试,结果经常受到质疑和质疑。如果 JMeter 可以有效地用于 Mirth 测试,那么测试统计数据的可信度就会更高。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2019-08-28
相关资源
最近更新 更多