当前位置: 首页 > article >正文

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

抢先一步学习进阶干货!


http://www.kler.cn/a/519915.html

相关文章:

  • 从ai产品推荐到利用cursor快速掌握一个开源项目再到langchain手搓一个Text2Sql agent
  • 《CPython Internals》阅读笔记:p360-p377
  • 用Python和PyQt5打造一个股票涨幅统计工具
  • 免费SSL证书申请,springboot 部署证书
  • 延迟之争:LLM服务的制胜关键
  • Stable Diffusion 3.5 介绍
  • c语言函数(详解)
  • Vue.js 高级组件开发
  • 任务一:Android逆向
  • 泷羽Sec-Powershell3
  • 设计模式思想的元规则
  • Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用
  • 数据结构day02
  • go安全项目汇总表
  • 神经网络|(三)线性回归基础知识
  • Leetcode - 周赛433
  • 【算法学习】分治法应用—归并排序
  • Springboot 的启动流程【超级详细 | 附带思维导图】
  • 左右互博02-unidbg主动调用外层so函数
  • 【MQ】RabbitMq的可靠性保证
  • dmfldr实战
  • 云计算架构学习之LNMP架构部署、架构拆分、负载均衡-会话保持
  • 从传统桌面应用到现代Web前端开发:技术对比与高效迁移指南20250122
  • 【Rust自学】14.4. 发布crate到crates.io
  • k8s官方文档的阅读笔记
  • 超融合服务器怎么优化数据管理?