推荐一款es轻量级的压测工具
Posted bohu83
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐一款es轻量级的压测工具相关的知识,希望对你有一定的参考价值。
一 背景:
之前折腾2天想用es 官网推荐的es压测工具,各种坑,参见我之前的安装过程centos7 安装esrally 踩坑过程_bohu83的博客-CSDN博客_esrally安装
这里面很多参数,主要是读写的速度。
有一点,这是基准的压测,不能很好的模拟线上的同事读写某个比例的情况。
二 loadgen
相对于esrally 只看es的整体指标。loadgen就简单好用多了。
下载,解压,修改loadgen.yml 即可。
下载地址:https://release.infinilabs.com/loadgen/stable/
选择自己合适的版本。解压后
如何修改参数,参见官网:就是设置es的账户,ip, 写body,读的url
读写根据业务实际需要就行。
变量的使用:
面的配置中,variables
用来定义变量参数,根据 name
来设置变量标识,在构造请求的使用 $[[变量名]]
即可访问该变量的值,变量目前支持的类型有:
类型 | 说明 |
---|---|
file | 文件型外部变量参数 |
sequence | 自增数字类型的变量 |
range | 数字范围类型的变量,支持参数 from 和 to 来限制范围 |
uuid | UUID 字符类型的变量 |
now_local | 当前时间、本地时区 |
now_utc | 当前时间、UTC 时区 |
now_unix | 当前时间、Unix 时间戳 |
now_with_format | 当前时间,支持自定义 format 参数来格式化时间字符串,如:2006-01-02T15:04:05-0700 |
查询的例子:
配置节点 requests
用来设置 Loadgen 将依次执行的请求,支持固定参数的请求,也可支持模板变量参数化构造请求,以下是一个普通的查询请求:
requests:
- request:
method: GET
basic_auth:
username: elastic
password: pass
url: http://localhost:8000/medcl/_search?q=name:$[[user]]
上面的查询对 medcl
索引进行了查询,并对 name
字段执行一个查询,每次请求的值来自随机变量 user
。
批量写入(bulk)操作
使用 Loadgen 来模拟 bulk 批量写入也非常简单,在请求体里面配置一条索引操作,然后使用 body_repeat_times
参数来随机参数化复制若干条请求即可完成一批请求的准备,如下:
- request:
method: POST
basic_auth:
username: test
password: testtest
url: http://localhost:8000/_bulk
body_repeat_times: 1000
body: " \\"index\\" : \\"_index\\" : \\"medcl-y4\\",\\"_type\\":\\"doc\\", \\"_id\\" :
启动:
./loadgen-linux-386 -d 120 -c 7
上面是持续120秒,7个并发的情况。
输出结果:
[Loadgen Client Metrics]
Requests/sec: 3892.07
Request Traffic/sec: 0.00bytes
Total Transfer/sec: 55.84MB
Avg Req Time: 256.932µs
Fastest Request: 860.181µs
Slowest Request: 134.490269ms
Number of Errors: 0
Number of Invalid: 0
Status 200: 467048
[Estimated Server Metrics]
Requests/sec: 3922.53
Transfer/sec: 56.28MB
Avg Req Time: 1.78456ms
这个数据需要结合kibana 监控一起看。
包括读写速率、延迟、cpu\\系统负载大小等。
如果测试服务器充足,可以部署在多个上,一个节点可以部署多个loadgen.改下名字。
分别设定不同的并发,模拟业务读写不同的es索引。
开始用jmeter,不知道是不是我参数设置问题,抗不住这么大的并发jmeter自己先报了OOM 。
开多个情况,每个设置不同的配置,这样更好的模拟线上的不同读写速率,值得推荐。
以上是关于推荐一款es轻量级的压测工具的主要内容,如果未能解决你的问题,请参考以下文章