Elasticsearch 性能测试工具 Loadgen 之 004——高级用法示例

在性能测试中,能够灵活地模拟不同的应用场景是至关重要的。

Loadgen 提供了多种高级用法,帮助用户更好地评估系统在不同负载下的表现。

c92a4e1ec5b0bf7276ea99071779527e.jpeg

本文将介绍如何使用 Loadgen 模拟批量摄取、限制客户端负载以及限制总请求数。

一、模拟批量摄取

在实际应用中,系统常常需要处理大量数据的批量摄取操作。Loadgen 可以轻松模拟这一过程,以评估系统在批量处理时的性能。示例配置 以下是一个批量摄取的请求配置示例:

- request:
    method: POST
    basic_auth:
      username: test
      password: testtest
    url: http://localhost:9200/_bulk
    body_repeat_times: 1000
    body: |
     {"index": {"_index": "medcl","_id": "$[[uuid]]"}}
      { "id" : "$[[id]]","field1" : "$[[user]]","ip" : "$[[ip]]","now_local" : "$[[now_local]]","now_unix" : "$[[now_unix]]" }

在这个配置中,我们向 http://localhost:9200/_bulk 发送 POST 请求,并使用 basic_auth 进行认证。

body_repeat_times: 1000 表示请求体中的内容会重复 1000 次,从而模拟批量插入数据的操作。

请求体中的数据使用了之前定义的变量,如 uuid、id、user 等,使每次插入的数据具有一定的随机性。

下面是 kibana 端统计索引文档数截图。特别说明:medcl 是索引名称,需要提前创建索引,否则会报错。

be9daad40f11e6f56feec78b8275739f.png

二、限制客户端负载

为了更好地评估应用程序在固定压力下的性能表现,Loadgen 提供了限制客户端负载的功能。通过设置 -r 参数,可以控制客户端每秒发送的请求数。

以下是一个限制客户端负载的命令示例:

➜  loadgen git:(master) ✗ ./bin/loadgen -d 30 -c 100 -r 100

这条命令表示在 30 秒内,使用 100 个并发线程进行测试,并且限制客户端每秒最多发送 100 个请求。这样可以模拟在高并发且有限制的请求速率下,应用程序的性能表现。

实测结果如下图所示:

fdaf5517781a7cadbf6e86d011b8c328.png

三、限制总请求数

使用 -l 参数可以控制客户端发送的总请求数,这在需要生成固定数量测试数据时非常有用。

以下是一个限制总请求数的命令示例:

./bin/loadgen -config loadgen-gw.yml -d 600 -c 100 -l 50000

这个命令表示使用 loadgen-gw.yml 配置文件,进行 600 秒的测试,并发线程数为 100,同时限制总请求数为 50000。这种方式适合需要生成特定数量数据场景的测试。

实测结果如下图所示:

2f01b79a4dfbbfe9731d1ea4eda0a55b.png

四、执行出错了怎么办?

本质上是 Http 请求,所以状态码是咱们检验的标准。

以下是 HTTP 响应状态码的核心解读,以 Markdown 表格形式呈现:

以下是 HTTP 响应状态码的核心解读,已转换为 Markdown 格式:

状态码状态码英文名称中文描述分类
100Continue客户端应继续其请求信息响应
200OK请求成功成功响应
201Created已创建。成功请求并创建了新的资源成功响应
204No Content请求成功,服务器处理成功但未返回内容成功响应
301Moved Permanently永久移动。资源已被永久移动到新URI重定向
302Found临时移动。资源暂时被移动重定向
304Not Modified未修改。资源未被修改重定向
400Bad Request请求包含语法错误,服务器无法理解客户端错误
401Unauthorized认证失败,要求用户身份认证客户端错误
403Forbidden权限受限,服务器拒绝执行请求客户端错误
404Not Found请求的资源不存在客户端错误
500Internal Server Error服务器内部错误服务器错误
502Bad Gateway错误网关,接收到无效响应服务器错误
503Service Unavailable服务不可用,服务器无法处理请求服务器错误

这些状态码是我们检验 HTTP 请求结果的重要标准,通过理解这些状态码,可以更有效地调试和优化应用程序。分类说明

  • 1xx: 信息响应 - 表示临时响应。

  • 2xx: 成功响应 - 表明请求成功。

  • 3xx: 重定向 - 表示需要进一步的操作以完成请求。

  • 4xx: 客户端错误 - 请求包含语法错误或无法完成请求。

  • 5xx: 服务器错误 - 服务器在处理请求时发生了错误。

还记得咱们之前介绍命令行参数的含义码?出问题可以走调试模式,以便于发现问题所在。如下截图就是参数配置错误导致响应状态码 400、404。

解决方案:加上 -debug 参数,看报错信息,一般精确到配置文件的行号,然后有针对的进行修改即可。

46a0ce552e61dc19c5efe1478741dd4a.png

五、小结

INFINI Loadgen 是一款功能全面、强大且易于使用的性能测试工具,适用于 Elasticsearch 和 EasySearch 等场景。通过简单的安装和灵活配置,我们可以轻松对各种应用程序进行性能测试。

无论是在开发阶段进行单元测试,还是在上线前进行全面性能评估,INFINI Loadgen 都能提供准确、可靠的测试结果,帮助我们发现并解决潜在性能问题,确保应用程序在实际运行中能够稳定、高效地提供服务。

希望本系列文章能帮助大家更好地了解和使用 INFINI Loadgen,让大家在性能测试工作中更加得心应手。如果大家在使用过程中有任何问题或心得,欢迎留言分享。


【实践好文】提升 Elasticsearch 性能的关键优化技巧,50ms提升到1ms!!

提升 Elasticsearch 索引性能 TOP 10 小技巧,你用到几个?

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

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

探索 INFINI Console:提升 Elasticsearch 管理效率的新利器

读者留言:有 Elasticsearch 国产化替代品吗?现在国产化不让用 ES 了......

Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南

d30a5b8adbdeee24212c7e5b280df510.png

更短时间更快习得更多干货!

和全球2000+ Elastic 爱好者一起精进!

elastic6.cn——ElasticStack进阶助手

32040350fa599b35257444b8211760e8.gif

抢先一步学习进阶干货!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/959692.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将点云转换为 3D 网格:Python 指南

3D 数据的世界往往是一个碎片化的景观。 存在点云,其细节丰富,但缺乏表面信息。 有3D 网格,它明确地定义表面,但创建起来通常很复杂。 将点云转换为网格弥补了这一差距并开启了许多可能性,从真实模拟到 3D 数字环境…

智能电动汽车系列 --- 智能汽车向车载软件转型

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

不解释快上车

聊一聊 最近有小伙伴问我有小红书图片和短视频下载的软件吗,我心想,下载那上面的图片和视频做什么?也许是自己没有这方面的需求,不了解。 不过话又说回来,有些很多下载器可能作者没有持续的维护,所以可能…

FPGA实现任意角度视频旋转(完结)视频任意角度旋转实现

本文主要介绍如何基于FPGA实现视频的任意角度旋转,关于视频180度实时旋转、90/270度视频无裁剪旋转,请见本专栏前面的文章,旋转效果示意图如下: 为了实时对比旋转效果,采用分屏显示进行处理,左边代表旋转…

[JavaScript] 面向对象编程

JavaScript 是一种多范式语言,既支持函数式编程,也支持面向对象编程。在 ES6 引入 class 语法后,面向对象编程在 JavaScript 中变得更加易于理解和使用。以下将详细讲解 JavaScript 中的类(class)、构造函数&#xff0…

20250121在Ubuntu20.04.6下使用Linux_Upgrade_Tool工具给荣品的PRO-RK3566开发板刷机

sudo upgrade_tool uf update.img 20250121在Ubuntu20.04.6下使用Linux_Upgrade_Tool工具给荣品的PRO-RK3566开发板刷机 2025/1/21 11:54 百度:ubuntu RK3566 刷机 firefly rk3566 ubuntu upgrade_tool烧写详解 https://wiki.t-firefly.com/Core-3566JD4/03-upgrad…

基础项目——扫雷(c++)

目录 前言一、环境配置二、基础框架三、关闭事件四、资源加载五、初始地图六、常量定义七、地图随机八、点击排雷九、格子类化十、 地图类化十一、 接口优化十二、 文件拆分十三、游戏重开 前言 各位小伙伴们,这期我们一起学习出贪吃蛇以外另一个基础的项目——扫雷…

【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题

本篇博客给大家带来的是01背包问题之动态规划解法技巧. 🐎文章专栏: 动态规划 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺便…

游戏steam_api64.dll文件缺失怎么办?无法找到指定的模块的解决方法

在使用Steam平台运行游戏时,有时会遇到“steam_api64.dll文件缺失,无法找到指定的模块”的错误提示。这个问题通常是由于该文件被误删、病毒感染、系统更新不兼容或游戏安装不完整等原因造成的。以下是一些有效的解决方法,帮助你解决steam_ap…

Linux学习笔记——网络管理命令

一、网络基础知识 TCP/IP四层模型 以太网地址(MAC地址): 段16进制数据 IP地址: 子网掩码: 二、接口管命令 ip命令:字符终端,立即生效,重启配置会丢失 nmcli命令:字符…

在 Windows 系统上,将 Ubuntu 从 C 盘 迁移到 D 盘

在 Windows 系统上,如果你使用的是 WSL(Windows Subsystem for Linux)并安装了 Ubuntu,你可以将 Ubuntu 从 C 盘 迁移到 D 盘。迁移过程涉及导出当前的 Ubuntu 发行版,然后将其导入到 D 盘的目标目录。以下是详细的步骤…

simulink入门学习01

文章目录 1.基本学习方法2.图形环境--模块和参数3.激活菜单---添加到模型3.1输入选项3.2添加到模型3.3更改运算3.4验证要求 4.乘以特定值--Gain模块4.1引入gain模块4.2更改增益参数4.3接入系统4.4大胆尝试 1.基本学习方法 今天突然想要学习这个simulink的相关知识,…

Linux的基本指令(上)

1.ls指令 语法:ls [选项] [目录或文件] 功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。 常用选项: -a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。 -d 将…

一文详解Filter类源码和应用

背景 在日常开发中,经常会有需要统一对请求做一些处理,常见的比如记录日志、权限安全控制、响应处理等。此时,ServletApi中的Filter类,就可以很方便的实现上述效果。 Filter类 是一个接口,属于 Java Servlet API 的一部…

【算法】数论基础——唯一分解定理(算术基本定理)python

目录 定义进入正题热身训练实战演练扩展衍生判断一个数是否为完全平方数举一反三总结 定义 唯一分解定理:也叫做算数基本定理: 任意一个大于1的整数N,都可以唯一分解为若干个质数的乘积 换句话说,任何大于1的整数n可以表示为: 例如…

互联网医院成品|互联网医院开发|互联网医院搭建

在数字化医疗蓬勃发展的当下,互联网医院系统已成为医疗服务体系中至关重要的组成部分。它打破了传统医疗服务在时间和空间上的限制,为患者提供了更加便捷、高效的医疗服务。而一套完善的互联网医院系统,有几个功能是不能缺少的。 在线问诊功能…

Go的内存逃逸

Go的内存逃逸 内存逃逸是 Go 语言中一个重要的概念,指的是本应分配在栈上的变量被分配到了堆上。栈上的变量在函数结束后会自动回收,而堆上的变量需要通过垃圾回收(GC)来管理,因此内存逃逸会增加 GC 的压力&#xff0…

填充每个节点的下一个右侧节点指针力扣--116,117

目录 题目 思路 代码 题目 116 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针&#xff0c…

钉钉群机器人设置——python版本

钉钉群机器人设置——python版本 应用场景钉钉界面操作程序开发效果展示 应用场景 由于工作需要,很多项目执行程序后出现报错信息无法第一时间收到,因此实时预警对于监控程序还是有必要。(仅个人观点) 参考文档及博客&#xff1a…

初步认识操作系统(Operator System)

目录 一、概念二、设计OS的目的三、定位四、操作系统上下的分级五、如何理解 "管理"六、总结 一、概念 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。操作系统包括: 内核(进程管理,内存管理&#xff0c…