• JMeter 如何实现 Elasticsearch 8.X 性能测试?


    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/

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

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

    7ac0a27bf25401fd145c419a9b3c4ea0.png

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

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

    2、JMeter 部署与启动

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

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

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

    972d250fcb869484d6f3f54a66768432.png

    2.1 修改编码格式

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

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

    sampleresult.default.encoding=UTF-8

    2.2 启动 JMeter

    双击:jmeter.bat

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

    3089a3063fa8e923e4e0f764ca5621f7.png

    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,类似“吃自助餐”,需要什么拿什么。

    bd06f12a8a09bdaecb34e790cf1d6c84.png

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

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

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

    040cd25b75ba368b7d6f7d13eaa3adea.png

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

    f0f6147de04d6ae5b9b1abb688655c33.png
    • Number of Threads:并发用户数。

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

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

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

    2af9660bcf3cd403fedf9cb3f04ca720.png 7d22a46b8fad60c48c4679f73f78a391.png 0ed59a2645458ad2b79484161b6cd3a4.png

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

    73cbd8b0e914b364cbe9712a485cb835.png

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

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

    bca7d37e7f62cd05bf983f071873eb01.png

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

    deb83be294d594411406b000e0a7fa53.png 0edd53bd09ee90f605dad6bbeb4656ff.png

    57d31e6913b15cb4afabb0a57c19b48b.gif

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

    5、实战性能对比

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

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

    46b57333a2c86cedd994e1721babe75a.png

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

    3017d7e1d29575e0702f12b906f750f8.png

    结果数据统计汇总如下:

    65d63d0923154d30addc7e5dff6f4763.png 9703a1044c14e005fd81a119cac6c29f.png 7321ef67b448b14b71507c6eb7ab00c4.png 100e56e927275a512349d133be523127.png

    初步结论如下:

    • 第一: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 如何进行简单的自定义性能测试?

    1d3453112f4ce815f53a60f69f7d23be.gif

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

  • 相关阅读:
    在iPhone上恢复删除Safari历史记录的方法[2024]
    DBNN实验进展
    进程信号(Linux)
    gdb调试程序教程
    深度学习编译器
    vue的语法讲解(上篇)--全网最详细的解答
    docker
    Docker覆盖网络--初步了解
    Linux中Java图片生成中文乱码问题解决
    基础运维(八)Linux 基础命令
  • 原文地址:https://blog.csdn.net/wojiushiwo987/article/details/126416321