你是否遇到过新搭建一个 Elasticsearch 集群,但是却无法评估该集群的最大吞吐是多少,或者使用一些压测工具,比如 esrally,需要花费很大力气准备,但是却无法压测到极限速度,服务器资源跑不满,或者测试产生的数据和实际的业务有很多出入,又或者测试的请求太简单,比如查询,就是对单个固定的搜索请求进行查询,不仅测不准还可能浪费时间没有参考意义,so,有没有一个简单的工具可以支持灵活的自定义压测,并且足够快,答案是 Loadgen。
Loadgen
Elasticsearch 压测工具 Loadgen ,由极限实验室出品,基于 Elasticsearch 的开发运维需求而开发,久经实际客户环境的真实考验,简单好用速度快。
一个没有经过压测的 Elasticsearch 不是一个完整的 Elasticsearch。
Loadgen 具有以下主要特点:
- 性能强劲
- 轻量级无依赖
- 支持模板化参数随机
- 支持高并发
- 支持压测端均衡流量控制
只有模拟自己真实业务数据场景的压测才有意义,通过使用 Loadgen 定义写入文档或者查询模板,同时将里面的变量词典化,确保每次请求都是足够随机,变量可以灵活复用,支持多个请求混合压测,最大程度模拟真实环境。
Loadgen
Loadgen 使用非常简单,下载解压之后会得到两个文件,一个可执行程序和一个配置文件 loadgen.yml,配置文件样例如下:
variables:
- name: ip
type: file
path: test/ip.txt
- name: user
type: file
path: test/user.txt
- name: id
type: sequence
- name: uuid
type: uuid
- name: now_local
type: now_local
- name: now_utc
type: now_utc
- name: now_unix
type: now_unix
requests:
- request:
method: GET
basic_auth:
username: elastic
password: pass
url: http://localhost:8000/medcl/_search
body: '{ "query": {"match": { "name": "$[[user]]" }}}'
变量的使用
上面的配置中,variables 用来定义变量参数,根据 name 来设置变量标识,在构造请求的使用 $[[变量名]] 即可访问该变量的值,变量目前支持的类型有:
| 类型 | 说明 |
|---|---|
| file | 文件型外部变量参数 |

Loadgen是一款由极限实验室开发的Elasticsearch压力测试工具,它轻量级、高性能,支持模板化参数随机、高并发及流量控制。Loadgen能够模拟真实业务场景,自定义写入文档和查询模板,确保测试数据的随机性和灵活性。通过配置文件定义变量和请求,可以实现复杂的压测场景,如批量写入、限制客户端压力和请求总数。此外,Loadgen还支持设置请求体内的自增ID,确保文档顺序性。使用Loadgen,用户可以更精确地评估Elasticsearch集群的性能和稳定性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



