1、简介
Rally 是 Elastic 官方提供的 ES 基准压测工具
2、使用介绍
2.1、默认方式
在本机创建一个 ES 实例,然后对其进行压测,把压测报告放内存中
2.2、持久化压测报告
可以指定一个 ES 集群来存储压测报告,以便回溯对比。需要做 2 个动作:
- 配置 rally.ini
[reporting]
datastore.type = elasticsearch
datastore.host = localhost
datastore.port = 9200
- 压测时选择 pipeline:
--pipeline=benchmark-only
pipeline 在这里指的是汇报 results 时需要做哪些动作,通过不同的参数,可以自定义步骤:
esrally list pipelines
pipelines | desc |
---|---|
from-sources-complete | 压测时,从 build ES 源代码这一步开始 |
from-sources-skip-build | 压测时,从跳过 build 步骤开始 |
from-distribution | 压测时,从下载一个指定版本的 ES 源代码开始 |
benchmark-only | 压测时,仅使用指定的 ES 进行压测 |
2.3、指定压测已有 ES 集群
参考:Benchmarking an existing cluster
在生产中,一般 ES 集群都是自建,并根据业务需求进行了系统和应用优化,这时需要进行远程压测。rally 可以通过参数 --target-hosts=
来指定集群节点。
2.4、协同压测 or 分布式压测
参考:Distributing the load test driver
如果 ES 集群的性能非常好,那么一个 rally 实例产生的负载是不够的,这时可以进行分布式协同压测。
先在多个压测机器和目的 ES 集群的所有节点部署 rally(包括压测数据,部署一台,然后 copy 过去即可),用于发起 rally 压测命令的;接着在目的 ES 集群的各个节点
2.5、自定义 repo 仓库
参考:Changing the default track repository
rally 提供了几个压测场景 tracks,使用的是某些组织的公开数据。但是,生产的业务数据与之大不相同,这时需要使用自己的数据进行压测。rally 可以通过参数 --track-repository=
指定自定义的压测场景。
2.6、离线压测
rally 默认是在线压测的(不可用)
rally 安装后,本身只有压测脚本和压测场景的配置,并没压测场景的样本数据,在运行时才自动从 aws s3 下载,这样的效率非常低。
另外,随着 aws s3 的更新,已经不支持 curl 下载。rally 的下载脚本 ~/.rally/benchmarks/tracks/default/download.sh TRACK_NAME
是使用 curl 来下载文件的,所以在线压测功能本身就不可用。
rally 也可以使用离线压测模式(推荐)
在压测前,通过浏览器先自行下载某个压测场景的样本数据,再上传到压测的机器。
2.7、测试模式
--test-mode
参数用于启动 dry run 模式,rally 只检测运行环境和数据,不会真正执行压测,用于快速检查配置。