jmeter如何实现elasticsearch8.x性能测试?

铭毅天下 铭毅天下     2022-11-30     439

关键词:

1、Elasticsearch 性能测试工具

包含但不限于:

  • 1、rally

Elasticsearch 官方压测工具

下载地址:https://github.com/elastic/rally

文档地址:https://esrally.readthedocs.io/en/stable/

  • 2、 Loadgen

Elasticsearch 专属压测工具,Medcl 大佬(原 Elastic 中国第一人,现极限科技CEO)出品。

下载地址:http://release.infinilabs.com/loadgen/

  • 3、JMeter

开源工具,纯 Java 编写,最初为 Java Web 应用程序而设计,后来扩展到其他测试功能。

下载地址:https://jmeter.apache.org/download_jmeter.cgi

早些年用过 JMeter 测试过 Elasticsearch 5.X 的功能,当时是测试同事协助完成,我自己没有完全掌握。

今天,我带领大家从头过一遍,让大家彻底搞懂 JMeter 实现 Elasticsearch 性能测试。

2、JMeter 部署与启动

由于Java 程序编写,自然支持跨平台,Windows 和 Linux 都可以运行。

这里,主要讲解 Windows 可视化界面配置。

谈不上部署,解压类似绿色安装包就可以使用。

2.1 修改编码格式

为了让 JMeter 支持中文字符,切记先修改配置文件。

修改 bin 路径下的:jmeter.properties 的缺省编码格式如下:

sampleresult.default.encoding=UTF-8

2.2 启动 JMeter

双击:jmeter.bat

启动后,会出现如下的可视化界面:

3、JMeter 性能测试认知前提

3.1 第一:本质上是 Java Web 应用程序测试的逻辑。

Elasticsearch 对外提供服务的就是 9200端口(默认),本质也可以看作 web 服务。

3.2 第二:既然是性能测试,就涉及模拟并发用户请求。

并发用户在JMeter中叫:Threads(Users)。

3.3 第三:既然是Web服务,就涉及配置 Http 请求头。

请求头包含但不限于:

1)Http 请求头,IP、端口、编码格式等基础信息配置,对应于JMeter 中的:Http Request。

2)Https 安全,用户名、密码等的配置,对应于JMeter中的:Http Authorization Manager。

3)Https 响应数据格式,对应于JMeter中的:Http Header Manager。

3.4 第四:既然是性能测试,就得有出报告的地方。

对应于 Listener,类似“吃自助餐”,需要什么拿什么。

有了上面四点认知,剩下的就是走流程了。

4、JMeter 实现 Elasticsearch 8.X 性能测试

4.1 步骤1:设置并发用户数。

如上图所示,逐个点击 Add->Threads(Users)->Thread Group。

  • Number of Threads:并发用户数。

  • Ram-up period:上面这些并发用户数的总耗时,单位为秒。

截图含义:1秒钟有100个用户并发请求。

4.2 步骤2:完成 Http 请求头及安全等基础配置。

4.3 步骤3:根据业务需求自助完成出报相关基础配置。

4.4 步骤4:执行并发性能测试。

绿色按钮执行,”扫帚“按钮清除执行。

4.5 步骤5:查看测试结果。

还有其他表和细节参数,本文没有展开,需要深入了解,查看一下官方文档即可。

5、实战性能对比

  • 4核8G 云服务器(堆内存设置2GB),单节点8.1版本集群性能测试。

  • 索引:weibo相关(构造假数据),数据量:228万4009。

  • 分10并发用户、50并发用户、100并发用户、200并发用户对比如下四种检索方式的平均响应时间。

结果数据统计汇总如下:

初步结论如下:

  • 第一:Wildcard 检索类型不论并发用户是多少,都是最慢的,所以高并发场景不推荐使用。

  • 第二:match、term、match_phrase 要结合应用场景,单纯从性能测试响应时间的维度,无法给出明确的选型建议。

  • 第三:Term针对keyword精准匹配,Match针对倒排索引单个词项检索,Match_phrase针对短语匹配全文检索更为高效。

以上结论仅是初步的,大家或许会有不同的意见(场景不一样,结论会不同),欢迎拍砖。

6、小结

实战出真知,视频讲解地址:https://t.zsxq.com/05uNBQ3ZB。

欢迎就 JMeter 性能测试问题进行留言交流。

推荐阅读

  1. 如何从0到1打磨一门 Elasticsearch 线上直播课?

  2. 重磅 | 死磕 Elasticsearch 方法论认知清单(2021年国庆更新版)

  3. 如何系统的学习 Elasticsearch ?                      

  4. esrally 如何进行简单的自定义性能测试?

比同事抢先一步学习进阶干货!

jmeter如何实现elasticsearch8.x性能测试?

1、Elasticsearch性能测试工具包含但不限于:1、rallyElasticsearch官方压测工具。下载地址:https://github.com/elastic/rally文档地址:https://esrally.readthedocs.io/en/stable/2、LoadgenElasticsearch专属压测工具,Medcl 查看详情

一个线上问题引发的思考——elasticsearch8.x如何实现更精准的检索?

1、线上问题——问题来自:死磕Elasticsearch知识星球微信群这个问题涉及到业务细节,至今没有定论。不过,该问题引发了我的思考。2、我的一点思考我们使用Elasticsearch到底用来做什么?除了Elasticsearch早已不是10... 查看详情

一个线上问题引发的思考——elasticsearch8.x如何实现更精准的检索?

1、线上问题——问题来自:死磕Elasticsearch知识星球微信群这个问题涉及到业务细节,至今没有定论。不过,该问题引发了我的思考。2、我的一点思考我们使用Elasticsearch到底用来做什么?除了Elasticsearch早已不是10... 查看详情

elasticsearch8.x如何优雅的实现字段名称批量修改?

1、线上实战问题写入es前,数据格式如下"json_lbm_01":"test01","json_lbm_02":"test02","tmp_lbm_01":"test03","tmp_lbm_02":"test04"需求:单纯用pipeline可不可以实现,如果写入key包含json_提... 查看详情

elasticsearch8.x如何优雅的实现字段名称批量修改?

1、线上实战问题写入es前,数据格式如下"json_lbm_01":"test01","json_lbm_02":"test02","tmp_lbm_01":"test03","tmp_lbm_02":"test04"需求:单纯用pipeline可不可以实现,如果写入key包含json_提... 查看详情

logstash:如何配置metricbeat及logstash为elasticsearch8.x收集数据

如何配置Metricbeat及Logstash为Elasticsearch8.0收集数据如何配置Metricbeat及Logstash为Elasticsearch8.0收集数据_哔哩哔哩_bilibili 查看详情

jmeter用于接口测试中,关联如何实现

Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取。 1、打开jmeter,使用的3.3的版本,新建一个测试计划,在... 查看详情

[存]jmeter如何实现跨线程组传递参数

此文来源与组里小白的分享~Jmeter如何实现跨线程组传递参数(以传递token为例) 1.首先选择一个登陆接口(线程组1),添加正则表达式提取器提取token,接着再添加一个后置处理器BeanShellPostProcessor   2.BeanShellPostPro... 查看详情

运用elasticsearch8.1.x实现智能问答系统

序言图示:一个简单的智能问答系统。在当前业务系统中,是否感受到越来越多的智能化个性业务诉求,做一个智能化的商品搜索,用于检索商品的相似性;做一个图片搜索,检索相似的图片;做一个... 查看详情

jmeter实现线程递增启动

lr能实现线程阶梯式加压,Jmeter当然也可以!1.需要安装Jmeter插件SteppingThreadGroup  安装Jmeter插件管理器,即可随意安装你想要的插件,具体如何安装Jmeter插件管理器,详见http://www.cnblogs.com/huan2018/p/8931976.html  安装后... 查看详情

图解:elasticsearch8.x如何求解环比上升比例?(代码片段)

1、企业级Elasticsearch8.X实战问题问题描述:有个聚合的需求,问下大家,一个索引中有时间字段要求计算本月和上月相比的环比上升比例?——来自GPVIP群2、问题释义2.1啥叫环比?环比是统计学术语,表示... 查看详情

elasticsearch8.x如何动态的为正文添加摘要字段?

1、实战问题返回指定字段可以用:"_source":     "includes": [      *    ],    "excludes": [      "a"    ]  那有没有什么办法在返回指定字段的基础上指定返回前50个字符呢?例如我现在... 查看详情

elasticsearch8.x如何动态的为正文添加摘要字段?

1、实战问题返回指定字段可以用:"_source":     "includes": [      *    ],    "excludes": [      "a"    ]  那有没有什么办法在返回指定字段的基础上指定返回前50个字符呢?例如我现在... 查看详情

用jmeter参数化实现接口自动化测试

本文记录如何使用Jmeter参数化(csv)实现接口自动化——测试Token不同入参情况下,接口请求能够返回正确的结果1.首先需要使用Jmeter获取一个Token,如何获取暂略(同一般访问请求方式一样)2.在Jmeter中添加以下元件(红框)3.新... 查看详情

jmeter如何实现参数化用户,并且管理cookie

?谈到性能测试,经常需要对用户进行参数化,jemter工具参数化经常使用的一个元件就是CSV数据文件设置首先建议大家创建一个规范的目录保存文件目录作用data保存参数result保存结果script保存脚本如下所示设置目录的好处,就是... 查看详情

elasticsearch:如何在docker上运行elasticsearch8.x进行本地开发(代码片段)

对于Elasticsearch的新主要版本(8.x.x),有关于在Docker上运行Elasticsearch和Kibana的重大更新。过去适用于以前版本的Docker和DockerCompose的命令和语法需要更新才能适用于最新版本。在这篇文章中,我们将介绍如何使用Docker和DockerC... 查看详情

jmeter配置元件——jdbcconnectionconfiguration参数化

在昨天Jmeter配置元件——CSVDataSetConfig参数化一文中,有提到,在参数化时,还可以使用JDBCConnectionConfiguration配置元件实现,具体如何实现,如何操作,且听详解。jar包下载在Jmeter中想用到连接数据库的功能,必须下载jar包... 查看详情

如何在jmeter中使用oaeppadding实现rsa?(代码片段)

我需要在Jmeter中使用这段代码来获得字符串的加密。Ciphercipher=Cipher.getInstance("RSA/NONE/OAEPPadding","BC");我们怎样才能在Jmeter中实现同样的目标?感谢帮助!答案您可以在其中一个JSR223TestElements中使用相同的代码,例如:defcipher=javax.c... 查看详情