Esrally运行原理
确定运行模式
- 第一种:在线基准测试。
esrally --distribution-version=6.7.0
命令解释如下:
Esrally可以在没有ES实例的情况下,去基于某一个ES版本,进行性能测试。那么它的工作流程是:Esrally会首先从Elastic官网下载对应版本的软件,并将其存储在“esrally”目录中。下载完成ES版本后,会继续下载适用于ES产品的性能测试数据。一旦数据下载到本地,将进行性能分析,并最终打印出结果。
- 第二种:离线测试。
esrally --pipeline=benchmark-only --target-hosts=90.90.43.202:9200, 90.90.43.204:9200, 90.90.43.206:9200, --offline
命令参数解释如下:
- --offline表示离线测试。
- --pipeline = benchmark-only表示自定义集群时需要使用的pipeline,只进行压测而不去管理ES实例。
- --target-host表示需要测试的目标集群。
目录结构及相关含义
查看当前目录。
pwd
Esrally编译完成后,会在安装Esrally的用户根目录下面生成一个.rally目录,其目录结构如下所示(benchmarks及其子目录需要自己添加):
. ├── benchmarks │ ├── data │ │ └── geonames │ │ ├── documents.json │ │ └── documents.json.offset │ ├── races │ │ ├── 2020-09-24-02-28-11 │ │ │ └── race.json │ │ └── 2020-09-24-06-40-26 │ │ └── race.json │ ├── teams │ │ └── default │ │ └── cars │ │ └── v1 │ │ ├── 16gheap.ini │ │ ├── 1gheap.ini │ │ ├── 24gheap.ini │ │ ├── 2gheap.ini │ │ ├── 4gheap.ini │ │ ├── 8gheap.ini │ │ ├── basic-license.ini │ │ ├── dbg_non_safepoints │ │ │ └── templates │ │ │ └── config │ │ │ └── jvm.options │ │ ├── debug-non-safepoints.ini │ │ ├── default_distro │ │ │ ├── config.ini │ │ │ └── templates │ │ │ └── config │ │ │ └── elasticsearch.yml │ │ ├── defaults.ini │ │ ├── ea │ │ │ └── templates │ │ │ └── config │ │ │ └── jvm.options │ │ ├── ea.ini │ │ ├── fp │ │ │ └── templates │ │ │ └── config │ │ │ └── jvm.options │ │ ├── fp.ini │ │ ├── g1gc.ini │ │ ├── parallelgc.ini │ │ ├── trial-license.ini │ │ ├── unpooled │ │ │ └── templates │ │ │ └── config │ │ │ └── jvm.options │ │ ├── unpooled.ini │ │ ├── vanilla │ │ │ ├── config.ini │ │ │ ├── README.md │ │ │ └── templates │ │ │ └── config │ │ │ ├── elasticsearch.yml │ │ │ ├── jvm.options │ │ │ └── log4j2.properties │ │ ├── x_pack │ │ │ ├── base │ │ │ │ ├── ca │ │ │ │ │ ├── ca.crt │ │ │ │ │ └── ca.key │ │ │ │ └── config.py │ │ │ ├── ml │ │ │ │ └── templates │ │ │ │ └── config │ │ │ │ └── elasticsearch.yml │ │ │ ├── monitoring │ │ │ │ └── templates │ │ │ │ └── config │ │ │ │ └── elasticsearch.yml │ │ │ ├── README.md │ │ │ └── security │ │ │ └── templates │ │ │ └── config │ │ │ ├── elasticsearch.yml │ │ │ ├── log4j2.properties │ │ │ ├── role_mapping.yml │ │ │ ├── roles.yml │ │ │ ├── users │ │ │ └── users_roles │ │ ├── x-pack-ml.ini │ │ ├── x-pack-monitoring-http.ini │ │ ├── x-pack-monitoring-local.ini │ │ └── x-pack-security.ini │ └── tracks │ └── default │ └── geonames │ ├── challenges │ │ └── default.json │ ├── files.txt │ ├── index.json │ ├── operations │ │ └── default.json │ ├── __pycache__ │ │ └── track.cpython-37.pyc │ ├── README.md │ ├── terms.txt │ ├── track.json │ └── track.py ├── logging.json ├── logs │ ├── rally.log │ ├── rally.log.2020-09-22 │ └── rally.log.2020-09-23 └── rally.ini

- “benchmarks/genonames/data/”目录:存放数据。
- “benchmarks/races”目录:存放结果,运行完程序后自动生成。
- “benchmarks/teams/default/cars/”目录:要进行的项目,进行压测比赛的考核项,系统已经准备。
- “benchmarks/tracks/default/genonames/”目录:表示赛道,定义性能压测的规则、策略。
- logging.json:日志参数。
- “logs/*”:运行日志。
- rally.ini:esrally的配置参数。