JMeter - CSV数据集配置与Redis数据集配置 - 吞吐量比较
在这篇文章中,我想向您展示如何在JMeter中使用Redis数据集配置以及它如何影响测试的吞吐量。
Redis的:
Redis代表RE mote DI ctionary S erver 。它是一个开源 的内存 数据结构存储数据库。它将各种数据结构(如String,Map,Lists,Sets等)存储为Key值对。由于它是一个内存数据库,它将所有数据保存在RAM中(但它也可以定期在磁盘中写入数据)。因此,在读取/写入数据时,您可以获得显着的性能提升。
目标:
我的目标是看看redis如何与JMeter一起使用来保存我的测试数据而不是CSV文件,并了解当我使用Redis而不是CSV时我将在测试中产生的影响!
为何选择Redis:
我们大多数人都希望将JMeter测试的测试数据保存在CSV文件中。即使CSV文件是一个非常好的选择 - 通过使测试数据远离测试脚本,在分布式模式下使用JMeter时,管理变得非常困难。您可能知道,JMeter只是在所有从站中执行相同的jmx文件。因此,您的JMeter测试依赖的CSV文件也应该被复制到所有从属服务器!有时,slave2使用的测试数据不应由slave2使用[由于您的应用程序设计]。在这种情况下,您需要将CSV文件拆分为每个从站的多个文件,并将它们移动到从属计算机以成功运行测试。
Redis将是JMeter分布式模式测试的绝佳选择,因为它可以为所有从站提供数据。
CSV数据集配置:
- 首先,我创建一个包含100,000条记录的非常简单的CSV文件。
- 我创建了一个简单的JMeter测试来读取CSV文件,如下图所示。
- 现在只需在非gui模式下运行此测试。
- 我的天啊!!具有CSV数据集配置的JMeter可以在一秒内读取100K记录。
Redis数据集配置:
现在让我们使用Redis Data Set Config进行类似的测试。
- 首先确保安装了“Redis Data Set Config”插件。
- 在撰写本文时,JMeter插件管理器无法正确安装Redis插件。Redis jar缺少属性文件。所以它不起作用。
- 使用此链接 下载额外的lib集。它具有Redis Data Set Config的工作版本。
- 确保已安装Redis并且能够访问它。点击这里 安装。
- 让我们像在CSV中那样在Redis中创建100,000条记录。
- 我创建了一个非常简单的测试来使用Redis数据集配置而不是CSV。其他一切都保持不变。
- 以非gui模式运行测试。
- 就我而言,JMeter能够在一秒钟内读取大约2300条记录,这是可以的。
注意:
- 我确信Redis吞吐量不佳的原因是由于网络延迟,因为我在一台单独的机器上运行Redis服务器。JMeter连接到redis服务器以获取数据。
- 我的JMeter测试中只有一个线程在运行。因此,JMeter会向Redis发送100,000个请求以按顺序读取数据。
- 我可以通过在同一台机器上运行JMeter和Redis来进行类似的测试,其中性能会好得多。但我的目标是看看Redis如何用于JMeter分布式测试。在这种情况下,Redis必须在一台单独的机器上运行。这就是我用这种方式测试的原因。如果你不这么认真,请纠正我!
- 我会建议你做类似的测试并自己比较一下你的表现。结果可能与您完全不同,并根据您的机器配置而有所不同。
概要:
我期待这个结果,因为CSV文件将在您的本地,而Redis DB正在我的网络中的其他地方运行。网络延迟将在Redis吞吐量中发挥重要作用。因此,CSV文件读取将比Redis更好。然而,CSV读取比Redis好40倍,这是令人惊讶的。我试图与大家分享这些信息,以便在创建JMeter测试以测试高吞吐量应用程序时可以非常小心。正如我一直在说的那样,我们都需要注意我们在测试中添加了哪些元素。