作者原文:https://github.com/elastic/rally
Rally
Rally是Elasticsearch的宏基准框架。
What is Rally?
你是否想用基准测试ES?那你可以使用Rally。他可以帮你解决这些任务:
- 安装以及拆解es集群,进行基准测试;
- 甚至跨Elasticsearch版本管理基准数据和规范
- 运行基准测试和记录结果
- 通过附属的自动检测装置来查找性能问题
- 对比性能结果
我们在Rally上付出了巨大努力,以确保基准数据具有可复写性。
Quick Start
Installing Rally
注意:如果你在ES上进行频发开发,我们建议你,在E上采用开发模式安装Rally,而不是快速移动ES,Rally总是适配于最新的(ES)主版本。
安装Python 3.4+,包含 pip3, JDK 8以及git 1.9+。 然后运行如下命令,加入必要的话,可以使用sudo命令:
pip3 install esrally
如果你有任何疑问或者需要更多的详细说明,请查看详细安装手册。
esrally安装完后,在启动的过程,遇到了一个由于Python缺少bz2包导致的小错误,由于不熟悉Python,实际浪费了不少时间。主要是缺少bz2包导致的。
Configure
只是调用esrally配置。
有关更详细的说明和详细演练,请参阅配置指南。
Run your first race
现在我们已经准备好运行第一个程序了:
esrally --distribution-version=5.0.0
将下载Elasticsearch 5.0.0并运行Rally的默认追踪。 运行结束后,将以命令行方式生成摘要报告:
------------------------------------------------------
_______ __ _____
/ ____(_)___ ____ _/ / / ___/_________ ________
/ /_ / / __ \/ __ `/ / \__ \/ ___/ __ \/ ___/ _ \
/ __/ / / / / / /_/ / / ___/ / /__/ /_/ / / / __/
/_/ /_/_/ /_/\__,_/_/ /____/\___/\____/_/ \___/
------------------------------------------------------
| Metric | Operation | Value | Unit |
|-------------------------------:|---------------------:|----------:|-------:|
| Indexing time | | 28.0997 | min |
| Merge time | | 6.84378 | min |
| Refresh time | | 3.06045 | min |
| Flush time | | 0.106517 | min |
| Merge throttle time | | 1.28193 | min |
| Median CPU usage | | 471.6 | % |
| Total Young Gen GC | | 16.237 | s |
| Total Old Gen GC | | 1.796 | s |
| Index size | | 2.60124 | GB |
| Totally written | | 11.8144 | GB |
| Heap used for segments | | 14.7326 | MB |
| Heap used for doc values | | 0.115917 | MB |
| Heap used for terms | | 13.3203 | MB |
| Heap used for norms | | 0.0734253 | MB |
| Heap used for points | | 0.5793 | MB |
| Heap used for stored fields | | 0.643608 | MB |
| Segment count | | 97 | |
| Min Throughput | index-append | 31925.2 | docs/s |
| Median Throughput | index-append | 39137.5 | docs/s |
| Max Throughput | index-append | 39633.6 | docs/s |
| 50.0th percentile latency | index-append | 872.513 | ms |
| 90.0th percentile latency | index-append | 1457.13 | ms |
| 99.0th percentile latency | index-append | 1874.89 | ms |
| 100th percentile latency | index-append | 2711.71 | ms |
| 50.0th percentile service time | index-append | 872.513 | ms |
| 90.0th percentile service time | index-append | 1457.13 | ms |
| 99.0th percentile service time | index-append | 1874.89 | ms |
| 100th percentile service time | index-append | 2711.71 | ms |
| ... | ... | ... | ... |
| ... | ... | ... | ... |
| Min Throughput | painless_dynamic | 2.53292 | ops/s |
| Median Throughput | painless_dynamic | 2.53813 | ops/s |
| Max Throughput | painless_dynamic | 2.54401 | ops/s |
| 50.0th percentile latency | painless_dynamic | 172208 | ms |
| 90.0th percentile latency | painless_dynamic | 310401 | ms |
| 99.0th percentile latency | painless_dynamic | 341341 | ms |
| 99.9th percentile latency | painless_dynamic | 344404 | ms |
| 100th percentile latency | painless_dynamic | 344754 | ms |
| 50.0th percentile service time | painless_dynamic | 393.02 | ms |
| 90.0th percentile service time | painless_dynamic | 407.579 | ms |
| 99.0th percentile service time | painless_dynamic | 430.806 | ms |
| 99.9th percentile service time | painless_dynamic | 457.352 | ms |
| 100th percentile service time | painless_dynamic | 459.474 | ms |
----------------------------------
[INFO] SUCCESS (took 2634 seconds)
----------------------------------