jmeter 中的长时间浸泡测试
Long duration soak tests in jmeter
Jmeter 测试 运行 采用主从方式,大约有 8 台从机。但是,当远程批处理模式设置为 MODE_STRIPPED_BATCH 时,我无法 运行 测试超过 64 小时。吞吐量约为每分钟 450 个请求,每台从属机器会创建大约 1.5 GB 的 jtl 文件。所有 8 个从站都将把它发送给主站 (1.5 gb x 8),可能 I/O 太多了,主站无法处理。主机内存为 16 GB 内存,磁盘存储量约为 250 GB。我想知道 jmeter 分布式架构是否有任何规定可以在主机上没有任何无法解释的压力的情况下进行长时间的 运行ning 浸泡测试。显然,我可以选择放弃主从设置并选择 8 个独立节点,但是在这种情况下,我会 运行 在服务数据 csv 文件方面变得复杂(我目前使用简单 table来自 master m) 的服务器插件以及聚合结果文件。请有任何建议。如果能够 运行 测试至少 4 天左右(96 小时左右)就太好了。
我的预期是您正在寻找 StrippedAsynch
采样器发送器模式。
根据 documentation:
Asynch
samples are temporarily stored in a local queue. A separate worker thread sends the samples. This allows the test thread to continue without waiting for the result to be sent back to the client. However, if samples are being created faster than they can be sent, the queue will eventually fill up, and the sampler thread will block until some samples can be drained from the queue. This mode is useful for smoothing out peaks in sample generation. The queue size can be adjusted by setting the JMeter property asynch.batch.queue.size
(default 100
) on the server node.
StrippedAsynch
remove responseData from successful samples, and use Async sender to send them.
因此在从节点上将以下行添加到 user.properties 文件中:
mode=StrippedAsynch
并在主节点上定义 asynch.batch.queue.size
,高到不影响 JMeter 的吞吐量(不会减慢它的速度),低到不压倒主节点。我将从 1000
.
开始
另一个选项是使用StrippedDiskStore
,但您必须在测试完成后手动收集序列化结果(确保从属进程不会关闭,因为从属进程完成后结果将被删除)
您可以使用 JMeter PerfMon Plugin 来监控主机和从机的内存和网络使用情况。
我建议使用独立的 JMeter worker + 外部数据收集器设置。
实际上,JMeter 的开箱即用 "distributed scaling" 功能很弱,已经过时并且总体上非常荒谬。以及它的数据 collection/agregation/processing 能力。
这种情况实际上让我很困惑 - 请注意,竞争对手更糟糕,所以这个领域实际上什么都没有(除了,也许,一些 SaaS 解决方案试图通过这种差距获利)。
但就是这样...
这就是关于 为什么-s,现在是 如何-s.
如果我是你,我会:
容器化 JMeter worker
为每个容器配备看门狗,以便在本地出现问题时快速重启 worker(或者甚至可能按计划最终刷新它)。无论是内部服务,还是像云服务这样的外部服务 - 都没有关系。
设置一个时间序列数据库 - 我推荐 InfluxDB,它是一个优秀的产品,它的基本版本是免费的(这足以满足您的目的)。
将您的测试 results/metrics 放入该数据库 - 不要在本地收集它们!您可以使用非常简单的自定义侦听器(Influx 线路协议非常简单和快速)直接从您的测试中完成,或者您可以让外部代理在结果文件流动时监视它们。我只是建议您不要使用所谓的 Backend Listner 来完成这项工作 - 这是垃圾,它不会正确地塑造您的数据,因此您必须执行额外的操作才能使它们有序。
如果你正确地塑造你的测试 result/metrics 数据,你已经将它们时间同步到一个集合中 - 进一步的处理选项非常强大!
Jmeter 测试 运行 采用主从方式,大约有 8 台从机。但是,当远程批处理模式设置为 MODE_STRIPPED_BATCH 时,我无法 运行 测试超过 64 小时。吞吐量约为每分钟 450 个请求,每台从属机器会创建大约 1.5 GB 的 jtl 文件。所有 8 个从站都将把它发送给主站 (1.5 gb x 8),可能 I/O 太多了,主站无法处理。主机内存为 16 GB 内存,磁盘存储量约为 250 GB。我想知道 jmeter 分布式架构是否有任何规定可以在主机上没有任何无法解释的压力的情况下进行长时间的 运行ning 浸泡测试。显然,我可以选择放弃主从设置并选择 8 个独立节点,但是在这种情况下,我会 运行 在服务数据 csv 文件方面变得复杂(我目前使用简单 table来自 master m) 的服务器插件以及聚合结果文件。请有任何建议。如果能够 运行 测试至少 4 天左右(96 小时左右)就太好了。
我的预期是您正在寻找 StrippedAsynch
采样器发送器模式。
根据 documentation:
Asynch
samples are temporarily stored in a local queue. A separate worker thread sends the samples. This allows the test thread to continue without waiting for the result to be sent back to the client. However, if samples are being created faster than they can be sent, the queue will eventually fill up, and the sampler thread will block until some samples can be drained from the queue. This mode is useful for smoothing out peaks in sample generation. The queue size can be adjusted by setting the JMeter property
asynch.batch.queue.size
(default100
) on the server node.StrippedAsynch
remove responseData from successful samples, and use Async sender to send them.
因此在从节点上将以下行添加到 user.properties 文件中:
mode=StrippedAsynch
并在主节点上定义 asynch.batch.queue.size
,高到不影响 JMeter 的吞吐量(不会减慢它的速度),低到不压倒主节点。我将从 1000
.
另一个选项是使用StrippedDiskStore
,但您必须在测试完成后手动收集序列化结果(确保从属进程不会关闭,因为从属进程完成后结果将被删除)
您可以使用 JMeter PerfMon Plugin 来监控主机和从机的内存和网络使用情况。
我建议使用独立的 JMeter worker + 外部数据收集器设置。
实际上,JMeter 的开箱即用 "distributed scaling" 功能很弱,已经过时并且总体上非常荒谬。以及它的数据 collection/agregation/processing 能力。
这种情况实际上让我很困惑 - 请注意,竞争对手更糟糕,所以这个领域实际上什么都没有(除了,也许,一些 SaaS 解决方案试图通过这种差距获利)。 但就是这样...
这就是关于 为什么-s,现在是 如何-s.
如果我是你,我会:
容器化 JMeter worker
为每个容器配备看门狗,以便在本地出现问题时快速重启 worker(或者甚至可能按计划最终刷新它)。无论是内部服务,还是像云服务这样的外部服务 - 都没有关系。
设置一个时间序列数据库 - 我推荐 InfluxDB,它是一个优秀的产品,它的基本版本是免费的(这足以满足您的目的)。
将您的测试 results/metrics 放入该数据库 - 不要在本地收集它们!您可以使用非常简单的自定义侦听器(Influx 线路协议非常简单和快速)直接从您的测试中完成,或者您可以让外部代理在结果文件流动时监视它们。我只是建议您不要使用所谓的 Backend Listner 来完成这项工作 - 这是垃圾,它不会正确地塑造您的数据,因此您必须执行额外的操作才能使它们有序。
如果你正确地塑造你的测试 result/metrics 数据,你已经将它们时间同步到一个集合中 - 进一步的处理选项非常强大!