database - JMeter 线程运行一次,而循环计数器设置为“永远”且具有恒定吞吐量计时器
问题描述
我在 JMeter 中有一个测试计划来测试 memSQL 数据库,它似乎只运行每个线程一次,而不是永远运行。
- 它有 3 个线程组。
- 每个都有自己的 JDBC 请求元素(1 表示删除,1 表示插入,1 表示选择)。
- 我希望所有请求都从 csv 文件中读取参数。我为整个测试计划使用 1 个 CSV 数据集配置元素(共享模式设置为所有活动线程)和每个线程组 1 个(模式设置为当前线程组)尝试了我的测试。
- 用于删除和插入的 JDBC 请求元素具有为查询类型属性设置的准备好的更新语句。
- select 的一个请求元素具有为该字段设置的准备好的 select 语句值。
- 在我尝试的所有情况下,CSV 数据集配置属性都设置为:EOF 上的回收 - 真,EOF 上的停止线程 - 假。
- 我在整个测试计划中使用了一个恒定的吞吐量计时器元素。对于 based on 属性,它设置为所有活动线程(共享)。
- 就像标题中提到的那样 - 每个线程组都勾选了永远循环计数框。没有使用调度程序,并且在错误时选择了继续按钮(尽管没有)。
- 在摘要报告中,我没有从 db 中得到 java 异常。只有查询输出和延迟时间。
如前所述,我已经为所有线程组尝试了 1 个 csv 源文件。现在我创建了 3 个不同的 csv 文件,问题仍然存在。我尝试将所有线程的加速时间设置为 0、0.1、1、2,但仍然没有运气。
查看我创建的摘要报告后,我总是看到相同数量的样本。我有 3 个线程组,每个线程组有 80 个线程,所以我总是得到 240 个相同的线程。即使测试持续了 1、2、3 分钟等。我尝试通过关机和停止测试来结束测试,并且两者都得到了相同的数字。
我希望线程继续运行,似乎它们只完成一次工作,然后在测试进行时停止。这与恒定吞吐量计时器有关吗?我在这里想念什么?
解决方案
TL;博士
看起来所有的配置都是正确的,但是恒定吞吐量计时器中的实际请求数太少了。此外,JMeter 尝试设置每分钟的吞吐量,因此使用该计时器进行测试的时间应该长于 1 或 2 分钟。
一个非常愚蠢的结论错误:检查您的吞吐量值,测试更长的时间。希望这对其他人有帮助。
原因是,在运行非 gui 版本的 jmeter 的服务器中,我创建了一个 shell 脚本,以每秒获取当前测试所需的请求数,并将其插入到计时器元素中适当字段的计划时间 60 中. 问题是我没有乘以 60,所以吞吐量非常低。如此之低,以至于对于几分钟的测试,我总是得到相同的样本数。
如果我要测试更长的时间,我会看到创建了更多的样本,但是因为 jmeter 延迟了线程以模拟低吞吐量,所以我只看到了第一次迭代。
推荐阅读
- javascript - JavaScript 代码不在实时服务器或本地主机上运行
- android - Kotlin:可变列表
(),当我做 .add 添加模型时,它会修改以前的添加值并添加新项目 - r - tidyverse 用户定义函数变量用法
- reactjs - 找不到文件:'styled-components.browser.esm.js' 与磁盘上的相应名称不匹配:
- c# - 从另一个项目调用时获取项目的输出目录
- javascript - 如何在特定频道上向另一个 Discord 服务器发送消息?
- php - PHPMailer 不工作,而 php mail() 工作
- authentication - 具有多个 Webassembly 应用程序的托管部署的 Blazor 身份验证
- python - 使用装饰器管理函数内部的属性
- templates - PHPWord(模板):调整现有表格单元格的属性(填充/边框)