Elasticsearch 性能测试工具 Loadgen 之 004——高级用法示例
在性能测试中,能够灵活地模拟不同的应用场景是至关重要的。
Loadgen 提供了多种高级用法,帮助用户更好地评估系统在不同负载下的表现。
本文将介绍如何使用 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 是索引名称,需要提前创建索引,否则会报错。
二、限制客户端负载
为了更好地评估应用程序在固定压力下的性能表现,Loadgen 提供了限制客户端负载的功能。通过设置 -r 参数,可以控制客户端每秒发送的请求数。
以下是一个限制客户端负载的命令示例:
➜ loadgen git:(master) ✗ ./bin/loadgen -d 30 -c 100 -r 100
这条命令表示在 30 秒内,使用 100 个并发线程进行测试,并且限制客户端每秒最多发送 100 个请求。这样可以模拟在高并发且有限制的请求速率下,应用程序的性能表现。
实测结果如下图所示:
三、限制总请求数
使用 -l 参数可以控制客户端发送的总请求数,这在需要生成固定数量测试数据时非常有用。
以下是一个限制总请求数的命令示例:
./bin/loadgen -config loadgen-gw.yml -d 600 -c 100 -l 50000
这个命令表示使用 loadgen-gw.yml 配置文件,进行 600 秒的测试,并发线程数为 100,同时限制总请求数为 50000。这种方式适合需要生成特定数量数据场景的测试。
实测结果如下图所示:
四、执行出错了怎么办?
本质上是 Http 请求,所以状态码是咱们检验的标准。
以下是 HTTP 响应状态码的核心解读,以 Markdown 表格形式呈现:
以下是 HTTP 响应状态码的核心解读,已转换为 Markdown 格式:
状态码 | 状态码英文名称 | 中文描述 | 分类 |
---|---|---|---|
100 | Continue | 客户端应继续其请求 | 信息响应 |
200 | OK | 请求成功 | 成功响应 |
201 | Created | 已创建。成功请求并创建了新的资源 | 成功响应 |
204 | No Content | 请求成功,服务器处理成功但未返回内容 | 成功响应 |
301 | Moved Permanently | 永久移动。资源已被永久移动到新URI | 重定向 |
302 | Found | 临时移动。资源暂时被移动 | 重定向 |
304 | Not Modified | 未修改。资源未被修改 | 重定向 |
400 | Bad Request | 请求包含语法错误,服务器无法理解 | 客户端错误 |
401 | Unauthorized | 认证失败,要求用户身份认证 | 客户端错误 |
403 | Forbidden | 权限受限,服务器拒绝执行请求 | 客户端错误 |
404 | Not Found | 请求的资源不存在 | 客户端错误 |
500 | Internal Server Error | 服务器内部错误 | 服务器错误 |
502 | Bad Gateway | 错误网关,接收到无效响应 | 服务器错误 |
503 | Service Unavailable | 服务不可用,服务器无法处理请求 | 服务器错误 |
这些状态码是我们检验 HTTP 请求结果的重要标准,通过理解这些状态码,可以更有效地调试和优化应用程序。分类说明
1xx: 信息响应 - 表示临时响应。
2xx: 成功响应 - 表明请求成功。
3xx: 重定向 - 表示需要进一步的操作以完成请求。
4xx: 客户端错误 - 请求包含语法错误或无法完成请求。
5xx: 服务器错误 - 服务器在处理请求时发生了错误。
还记得咱们之前介绍命令行参数的含义码?出问题可以走调试模式,以便于发现问题所在。如下截图就是参数配置错误导致响应状态码 400、404。
解决方案:加上 -debug 参数,看报错信息,一般精确到配置文件的行号,然后有针对的进行修改即可。
五、小结
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 的介绍与部署指南
更短时间更快习得更多干货!
和全球超2000+ Elastic 爱好者一起精进!
elastic6.cn——ElasticStack进阶助手
抢先一步学习进阶干货!