首页 > 其他分享 >利用jmeter命令行模式对influxdb查询api进行压力测试

利用jmeter命令行模式对influxdb查询api进行压力测试

时间:2024-03-14 16:55:58浏览次数:36  
标签:压测 30 influxdb 查询 api jmeter 设备

需求说明

物联网指标数据(车辆的轨迹、里程、速度等)存储在influxDB中。需要对指标查询服务的性能做压力测试。

背景

1、java service已经对influxDB查询 sql 做了封装,api 参数如下:

{
    "deviceIds" : ["14146284645"],
    "startTime": 1710259200000,
    "endTime":  1710432000000,
    "fieldName": "loc"
}

api 支持查询“一个设备在一段时间内某一个指标的值”

2、压测时,尽可能每一次请求查询都不同。
我们有 1 万多个在线设备,压测时,要依次查询每一个设备的指标数据(而不是只对一个设备进行压测),避免数据库可能会对同一个 SQL 的查询结果进行缓存。这就要求压测工具支持在 HTTP 请求中添加变量。

3、要求所有的环节都在同一个局域网进行,避免因为网络带宽影响压测结果。
jmeter -> java service -> influxdb 需要在同一个局域网

方案

1、在MAC上利用 jmeter图形界面,做相关配置。

image

  • 并发数 30
  • 循环 500 次,即一共请求 15000 次

变量配置方式:
image
image

  • 从 csv 文件中读取设备 id 列表,并定义第一列为变量"deviceId"
  • 在http post body中,使用变量deviceId
  • 结合前面的“并发数 30、循环 500 次”的定义,每一个请求会依次读取 csv 文件中下一行的内容,就达到了“依次查询每一个设备的指标”的效果。

压测结果,采用“聚合报告”方式展示
image

导出相关配置,然后在linux服务器上使用命令行模式执行压测

把配置文件 copy 到服务器上,然后执行命令:
bash apache-jmeter-5.6.3/bin/jmeter -n -t 30_226.jmx -l result30-226-4.jtl -e -o report
这样就在/report目录下生成了结果报告。由于是html格式,copy到 MAC 上查看效果:
image

InfluxDB压测结果

版本: 2.7.4
数据量:存储了 2 个多月的指标数据,100亿行(设备、时间粒度)
查询: 查询一个设备 2 天的轨迹数据

并发 30,查询 1万次,结果如下:
image

并发 100,查询 1 万次,结果如下:
image

标签:压测,30,influxdb,查询,api,jmeter,设备
From: https://www.cnblogs.com/xushengbin/p/18073183

相关文章

  • Jmeter —— jmeter设置HTTP信息头管理器模拟请求头
    HTTP信息头管理器HTTP信息头管理器是在有需要模拟请求头部的时候进行设置的,添加方式是右击线程组--配置元件--HTTP信息头管理器​可以通过抓包工具或者F12获取http请求的header头部信息;如下图:​复制并点击jmeter中的从剪贴板添加,就会自动添加到http信息头管理器的列表......
  • 解决 K8sApi 部署后报 Unknown apiVersionKind apps/v1/Deployment is it registered?
    该功能在本地调试时是正常的,部署到服务器时报错。Jdk11+SpringBoot2.7.5,依赖:<dependency><groupId>io.kubernetes</groupId><artifactId>client-java</artifactId><version>20.0.0</version>......
  • Vue — 请求模块、api模块封装
    1.请求模块importaxiosfrom'axios'constrequest=axios.create({  baseURL:'',//请求的域名地址  timeout:5000,})request.interceptors.request.use((config)=>{  //开启loading禁止背景点击  returnconfig},(err)=>{  returnPro......
  • .Net接口版本管理与OpenApi
    前言作为开发人员,我们经常向应用程序添加新功能并修改当前的Api。版本控制使我们能够安全地添加新功能而不会造成中断性变更。一个良好的Api版本控制策略可以清晰地传达所做的更改,并允许使用现有RESTApi的客户端在准备好时才迁移或更新他们的应用程序到最新版本。哪些行为......
  • [实战]API防护破解之签名验签
    前言:传统的接口在传输的过程中,是非常容易被抓包进行篡改,从而进行中间人攻击。这时候我们可以通过对参数进行签名验证,如果参数与签名值不匹配,则请求不通过,直接返回错误信息,从而防止黑客攻击或者大大增加了黑客攻击的成本。白帽子在挖洞的时候也经常会遇到这种情况,大多数不会逆向......
  • JMeter接口性能压测之阶梯加压线程组(Stepping Thread Group)
    一、前言1、阶梯式场景(负载测试):该场景主要应用在负载测试只里面,通过设定一定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发用户来找到系统的性能瓶颈,进而有针对性的进行各方面的系统优化。2、Stepping Thread Group的作用减少服务器的瞬时压力,......
  • 1688 API商品详情接口与ERP系统应用
     API接口与ERP系统集成的应用主要包括数据同步、业务流程自动化和信息共享三个方面。数据同步:通过API接口,ERP系统可以与其他系统之间进行数据的交换和同步。比如,将销售订单从电商平台自动导入到ERP系统中,然后将发货信息同步回电商平台,实现订单管理的自动化。又如,将供应商的......
  • 1688中国站获得联系方式 API 返回值
    公共参数名称类型必须描述keyString是免费申请调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认yes,将调用缓存的数据,速度比较快result_typeString否[j......
  • JMeter接口性能压测之线程组(Thread Group)
    一、添加线程组测试计划右键--添加--线程(用户)--线程组  二、线程组设置延迟创建线程直到需要(Delay Thread creation until needed):此选项和Ramp-up时间(秒)设置配合使用,如果选择此项,则所有线程会在需要的时候启动,即会在Ramp-up时间(秒)时间结束后启动所有线程;如果不选择这......
  • Jmeter —— jmeter利用取样器中http发送请求
    使用Jmeter发送HTTP请求取样器是用来模拟用户操作,向服务器发送请求以及接收服务器的响应数据的一类元件,其中HTTP请求取样器是用来模拟常用的http请求的步骤如下:步骤一:添加线程组右击测试计划——添加——线程(用户)——线程组如下图:“线程组”的意思:JMeter是由Java实现的,并......