jmeter 性能测试用 csv_jmeter cvs

每次从第 1 行开始取值,在日常低并发的性能测试中,是没有任何问题的,因为此时你只需要运行一个 jmeter 就可以, 但是,如果你想做高并发的性能测试,需要有多个 jmeter 同时运行,构成分布式来向服务器发起请求,这时候就有问题了。

因为,采用分布式,在多台机器上同时运行 jmeter,每台机器都会从第 1 行开始读取你准备的测试文件,那么,就会出现同时多个线程使用同一个测试数据向服务器发起请求,这很可能导致你们的被测试服务出现各种异常。

⏩你是不是曾经出现使用分布式进行性能测试,出现很多 4xx 系列错误,而单机执行性能测试却没有;你是不是曾经出现,分布式时错误率升高,而单机时,同并发数,错误率要低很多;你是不是曾经出现,分布式请求,服务端日志,有大量锁冲突?

这些问题,如果你脚本中使用了‘CSV Data Set Config’,那么这些错误,很可能就是因为这个元件每次读数据只能从第 1 行开始读取的原因造成的。

这个坑,我曾经也遇到了,而且一度让我痛苦了几天,不过,后来我找到 4 种解决办法,今天,我就来给大家讲一种技术难度最低的方法。

☑️打开 jmeter 的插件管理,在 ‘available plugins’中搜索‘CSV’,勾选一个叫 ‘Random CSV Data Set’的插件,点击右下角的‘Apply Changes and Restart JMeter’下载安装这个插件。待下载成功自动重启之后,在 jmeter 的配置元件中,我们将找到‘bzm - Random CSV Data Set Config’元件。

你可以**点击下面的‘Test CSV Reading’来看下数据的顺序,你会发现,每次取的数据顺序都是不一样的。**这样,就很好解决了分布式时取数相同的问题了。方法非常简单。

⏩接下来,我们来对比看下这个元件的性能。

首先添加 ‘CSV Data Set Config’元件,读取一份大于 10000 行的数据文件,定义一个变量接收,然后,用一个调试取样器,应用这个变量, 设在 1000 的并发用户,持续运行 120s,保存脚本,采用 CLI 模式运行,查看运行时资源使用情况。

从监控到数据看,1000 的并发,120 秒中内,总共执行了 59830295 次请求,平均每秒 498141.6 次/s,我本机 CPU 使用率上升到约 48.3%,内存使用率约为 26.8%。

⏩现在,把元件换成 ‘bzm - Random CSV Data Set Config’,其他都不变了。采用 CLI 模式来运行,查看监控数据。

从监控到数据看,1000 的并发,120 秒中内,总共执行了 20860718 次请求,平均每秒 172912.8 次/s,我本机 CPU 使用率上升到约 66.5%,内存使用率约为 26.7%。

☑️从两个元件的测试结果来看,官方的 CSV Data Set Config 性能要优于 bzm - Random CSV Data Set Config,实际工作中,你可以根据你的实际情况来选择。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

### JMeter性能测试使用CSV文件的详细步骤 #### 1. 准备数据 在进行性能测试之前,需要准备好用于测试的数据。这些数据可以存储在一个CSV文件中,每行代表一组测试数据。例如,如果测试登录功能,则每一行可能包含用户名和密码[^2]。 #### 2. 创建CSV文件 创建一个名为`login_data.csv`的文件,并按照所需的格式填写数据。确保该文件保存到易于访问的位置,并记录其路径以便后续配置。通常情况下,CSV文件中的字段可以通过逗号分隔,但在某些环境中也可能使用其他字符(如空格)。这取决于具体需求以及工具设置[^3]。 #### 3. 配置CSV Data Set Config组件 在JMeter中添加`CSV Data Set Config`组件来读取CSV文件的内容。以下是具体的配置方法: - **右键点击线程组** -> **Add** -> **Config Element** -> **CSV Data Set Config** - 设置以下属性: - **Filename**: 输入CSV文件的完整路径。 - **Variable Names**: 定义变量名,对应于CSV文件中的列头。例如,如果有两列分别是用户名和密码,可分别命名为`username`和`password`。 - **Delimiter**: 指定分隔符,默认为逗号`,`。如果是其他字符(如空格),则需在此处指定[^4]。 - **Recycle on EOF**: 如果勾选此选项,当到达文件末尾时会重新从头开始读取;否则停止运行。 - **Stop thread on EOF**: 当未启用循环模式时,决定是否在线程结束前终止当前线程。 ```properties # 示例配置 filename=C:/path/to/login_data.csv variableNames=username,password delimiter=, recycle=true stopThread=false ``` #### 4. 在HTTP请求中引用CSV数据 完成上述配置后,在实际的HTTP请求或其他采样器中可以直接调用已定义好的变量`${username}`和`${password}`作为动态输入值。这样每次迭代都会自动替换新的用户凭证组合来进行测试。 #### 5. 测试执行与验证结果 最后一步就是启动测试计划并观察响应时间、吞吐量以及其他指标的表现情况。同时还可以利用监听器查看详细的事务详情或者错误日志等信息辅助分析问题所在之处。 ```bash # 启动命令示例 (假设已在环境变量中设置了JMETER_HOME) jmeter -n -t test_plan.jmx -l results.jtl ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值