elasticsearch性能测试研究了很久,自己想过通过批量导入数据,然后记录时间,统计CPU、内存等变化,计算得出某个性能指标。但显然,数据量起伏不定,非常不准确。
研究发现,github上提供了rally作为elasticsearch的性能测试工具,较好的解决了es性能测试问题。
1、esrally功能:es的性能测试工具。
esrally不支持windows版本,目前只支持Linux和Mac OS。
esrally的运行基于以下两点假设:
1)所有运行在同一台机器完成。(未来改假设条件可能会去掉)
2)你需要向Elasticsearch索引中添加特定的数据集,然后在其上进行基准查询(benchmarking queries).
2、esrally安装:
前提:验证是否安装了以下内容(注意版本)
Python 3.4+ available as python3 on the path (verify with: python3 –version which should print Python 3.4.0 or higher)
pip3 available on the path (verify with pip3 –version)
JDK 8
git
如下所示:
[root@laoyang git-2.4.0]# python
Python 3.5.1 (default, Aug 2 2016, 09:53:20)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
[root@laoyang git-2.4.0]# git --version
git version 2.4.0
[root@laoyang git-2.4.0]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
[root@laoyang git-2.4.0]# find / -name "pip3"
/usr/bin/pip3
/usr/local/python3/bin/pip3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
步骤1:安装 Rally
pip3 install esrally
步骤2:配置 Rally
调用: esrally configure 会提示让你输入 java8.home(也就是JAVA_HOME设定的环境变量路径)。
仅java8.home使用自己本机的JAVA_HOME环境变量路径,其他采用默认值即可。
[root@laoyang .rally]# cat /root/.rally/rally.ini
[meta]
config.version = 5
[system]
root.dir = /root/.rally/benchmarks
log.root.dir = logs
env.name = local
[source]
local.src.dir=/root/.rally/src #注意,此路径并非elaticsearch安装路径。
remote.repo.url=https://github.com/elastic/elasticsearch.git
[provisioning]
local.install.dir = install
[runtime]
java8.home = /opt/jdk1.8.0_91 #注意,JAVA_HOME 路径为:/opt/jdk1.8.0_91
[benchmarks]
local.dataset.cache = ${system:root.dir}/data
[reporting]
datastore.type = elaticsearch
datastore.host = 10.0.1.30
datastore.port = 9200
datastore.secure = False
datastore.user =
datastore.password =
[tracks]
default.url = https://github.com/elastic/rally-tracks
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
步骤3:运行esrally
由于elasticsearch的运行必须非root账户。esrally建议用非root账户执行。
3、esrally执行常见问题及解决方案
问题1:版本用哪个版本?
目前用最新版本 Rally 0.3.2(2016-8-7发行)。
问题2:注意gradle需要2.13版本,高版本会不兼容。
[root@laoyang caches]# ll /usr/bin/gradle
lrwxrwxrwx 1 root root 27 Aug 5 17:13 /usr/bin/gradle -> /opt/gradle-2.13/bin/gradle
问题3:安装时候提示 documents.json.bz2 无法下载成功。
1)手动下载: http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames/documents.json.bz2
2)移动到 /root/.rally/benchmarks/data/geonames/(对于root用户)
对于非root用户,elaticsearch用户,移动路径为:/home/elasticsearch/benchmarks/data/geonames/
问题4: esrally单独运行和加参数运行区别?
esrally单独运行:非常方便的指令,等价于 :esrally –pipeline=from-sources –version=current. Rally 将要通过Gradle从源码编译elasticsearch。
esrally –pipline=from-distribution –distribution-version=2.3.4, Rally将要从https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.4/elasticsearch-2.3.4.tar.gz
下载elaticsearch2.3.4版本运行。
问题5: Could not resolve all dependencies for configuration ‘:benchmarks:classpath’.
37 > Could not download shadow.jar (com.github.jengelman.gradle.plugins:shadow:1.2.3)如何解决?
root账户下:
cd /home/elasticsearch/.rally/benchmarks/src
gradle :distribution:tar:assemble
正确提示信息为:
deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:modules:transport-netty4:processResources UP-TO-DATE
:modules:transport-netty4:classes
:modules:transport-netty4:jar
:modules:transport-netty4:copyPluginPropertiesTemplate
:modules:transport-netty4:pluginProperties
:modules:transport-netty4:bundlePlugin
:distribution:buildModules
:distribution:tar:buildTar
:distribution:tar:generatePomFileForNebulaPublication
:distribution:tar:signArchives SKIPPED
:distribution:tar:assemble
BUILD SUCCESSFUL
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
4、esrally最终运行结果:
Preparing for race (might take a few moments) ...
Building from sources ...
/home/elasticsearch/.rally/benchmarks/races/2016-08-08-07-29-59/local/logs/rally_out.logRacing on track [geonames] and challenge [append-no-conflicts] with car [defaults]
Benchmarking indexing at 12183.1 docs/s [100% done]
Benchmarking stats (warmup iteration 100/100) [100% done]
Benchmarking stats (iteration 100/100) [100% done]
Benchmarking search (warmup iteration 100/100) [100% done]
Benchmarking search (iteration 100/100) [100% done]
------------------------------------------------------
_______ __ _____
/ ____(_)___ ____ _/ / / ___/_________ ________
/ /_ / / __ \/ __ `/ / \__ \/ ___/ __ \/ ___/ _ \
/ __/ / / / / / /_/ / / ___/ / /__/ /_/ / / / __/
/_/ /_/_/ /_/\__,_/_/ /____/\___/\____/_/ \___/
------------------------------------------------------
| Metric | Value |
|----------------------------------------------------------:|----------:|
| Min Indexing Throughput [docs/s] | 11949 |
| Median Indexing Throughput [docs/s] | 12307 |
| Max Indexing Throughput [docs/s] | 13349 |
| Indexing time [min] | 164.045 |
| Merge time [min] | 32.3815 |
| Refresh time [min] | 8.82333 |
| Flush time [min] | 1.63852 |
| Merge throttle time [min] | 1.45482 |
| Query latency default (90.0 percentile) [ms] | 68.8676 |
| Query latency default (99.0 percentile) [ms] | 77.6009 |
| Query latency default (100 percentile) [ms] | 78.8328 |
| Query latency term (90.0 percentile) [ms] | 4.63227 |
| Query latency term (99.0 percentile) [ms] | 10.9506 |
| Query latency term (100 percentile) [ms] | 13.0573 |
| Query latency phrase (90.0 percentile) [ms] | 6.35018 |
| Query latency phrase (99.0 percentile) [ms] | 13.1745 |
| Query latency phrase (100 percentile) [ms] | 14.2399 |
| Query latency country_agg_uncached (90.0 percentile) [ms] | 361.913 |
| Query latency country_agg_uncached (99.0 percentile) [ms] | 384.75 |
| Query latency country_agg_uncached (100 percentile) [ms] | 392.645 |
| Query latency country_agg_cached (90.0 percentile) [ms] | 7.71451 |
| Query latency country_agg_cached (99.0 percentile) [ms] | 17.4704 |
| Query latency country_agg_cached (100 percentile) [ms] | 18.4851 |
| Query latency scroll (90.0 percentile) [ms] | 50.4234 |
| Query latency scroll (99.0 percentile) [ms] | 50.9866 |
| Query latency scroll (100 percentile) [ms] | 51.2115 |
| Query latency expression (90.0 percentile) [ms] | 482.02 |
| Query latency expression (99.0 percentile) [ms] | 485.951 |
| Query latency expression (100 percentile) [ms] | 491.999 |
| Query latency painless_static (90.0 percentile) [ms] | 890.382 |
| Query latency painless_static (99.0 percentile) [ms] | 918.354 |
| Query latency painless_static (100 percentile) [ms] | 927.282 |
| Query latency painless_dynamic (90.0 percentile) [ms] | 968.908 |
| Query latency painless_dynamic (99.0 percentile) [ms] | 1019.14 |
| Query latency painless_dynamic (100 percentile) [ms] | 1021.97 |
| Median CPU usage (index) [%] | 887.7 |
| Median CPU usage (stats) [%] | 94.9 |
| Median CPU usage (search) [%] | 445.05 |
| Total Young Gen GC [s] | 89.121 |
| Total Old Gen GC [s] | 12.274 |
| Index size [GB] | 3.30111 |
| Totally written [GB] | 20.2123 |
| Heap used for segments [MB] | 21.6794 |
| Heap used for doc values [MB] | 0.113129 |
| Heap used for terms [MB] | 20.0574 |
| Heap used for norms [MB] | 0.0761719 |
| Heap used for points [MB] | 0.770404 |
| Heap used for stored fields [MB] | 0.6623 |
| Segment count | 96 |
| Indices Stats(90.0 percentile) [ms] | 11.5116 |
| Indices Stats(99.0 percentile) [ms] | 14.1724 |
| Indices Stats(100 percentile) [ms] | 36.8348 |
| Nodes Stats(90.0 percentile) [ms] | 11.342 |
| Nodes Stats(99.0 percentile) [ms] | 13.435 |
| Nodes Stats(100 percentile) [ms] | 16.4768 |
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
Logs for this race are archived in /home/elasticsearch/.rally/benchmarks/races/2016-08-08-07-29-59/local/logs-geonames-append-no-conflicts-defaults.zip
- 1
- 1
5、问题大讨论
https://discuss.elastic.co/t/the-below-bugs-appers-when-running-esrally/57063/25
源码 作者danielmitterdorfer一一回复, 最终作者回复:
I am very happy too and I am glad you had so much persistence. You also uncovered a few usability problems that I need to tackle.
帮作者提了一些建议,促使他升级了一个版本0.3.2。
参考:https://github.com/elastic/rally
小结
前面的确费劲周折,花费了接近3整天实践,期间甚至告诉原作者工具太难用,给作者反复沟通,最终问题解决。看到输出结果的那一刻,整个人很兴奋。坚持到底,相信付出的力量!不断思考、反思中前行!
2016-08-08 21:00思于家中窗前
作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/52155481
相关推荐
在《Elasticsearch 性能测试》这篇博文中,作者可能深入探讨了使用特定工具(如 JMeter)进行性能测试的步骤,以及如何解析测试结果并进行系统调优。PPT 文件 "elasticsearch.ppt" 可能包含了详细的测试计划、案例...
**Elasticsearch (ES) 压力测试工具——Rally 深度解析** Elasticsearch(简称ES)作为一款流行的开源搜索引擎和数据分析引擎,其性能和稳定性至关重要。为了确保ES在高负载下的表现,开发者和运维人员需要进行压力...
esrally是Elastic官方开源的压测工具,主要用于Elasticsearch性能压测。下面将对esrally的安装、配置、压测流程和结果分析进行详细的介绍。 一、esrally安装 esrally的安装非常简单,使用pip3 install esrally命令...
**Elasticsearch查询客户端与可视化工具*...总之,Elasticsearch查询客户端和可视化工具是提升ES操作效率和理解力的重要工具。正确选择和使用这些工具,能帮助开发者更好地管理和利用存储在Elasticsearch中的海量数据。
这款"elasticsearch漏洞检测工具V1.0"显然是为了帮助用户识别并防范这些安全问题而设计的。 该工具的核心目标是对Elasticsearch实例进行全面的安全评估,查找可能存在的漏洞。这可能包括但不限于以下方面: 1. **...
ElasticSearch客户端工具是用于管理和操作Elasticsearch(ES)集群的重要软件,它们提供了一种直观、高效的方式来查看和管理ES集群的状态、索引、文档以及执行查询和分析任务。这些工具极大地简化了对Elasticsearch...
Elasticsearch漏洞检测工具,包含Elasticsearch_1.2漏洞利用工具.jar和esExploit (elasticsearch)终极版.jar(Powered By VTI),如有侵权请联系删除。
elasticsearch的客户端比较出名的就是elasticsearch head 和Kibana了, 但是elasticsearch head已经停止更新,且样式老旧,功能不全; 而Kibana虽功能全面,但是启动麻烦,大部分功能用不上,很不灵活,所以采用vite...
总之,"esrally-dist-1.0.4.tar.gz"提供了完整的ESRally工具,为Elasticsearch的性能测试和调优提供了强大支持。无论是开发者还是运维人员,都可以利用这个工具深入了解Elasticsearch的性能边界,优化系统配置,提升...
**Elasticsearch官方测试数据详解** Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch...
Elasticsearch数据导出工具是一种高效实用的解决方案,它允许用户方便地从Elasticsearch(ES)集群中抽取数据,并将其导出到不同的目标,如MySQL数据库或本地文件系统。这款工具尤其适用于需要进行数据迁移、备份或...
elastiecsearch 的漏洞检测工具,对于elastiecsearch 在配置上或者版本上存在的问题有很好的检测和利用价值。
Elasticsearch工具类是开发中常见的一种抽象封装,旨在简化与Elasticsearch数据库的交互,提高代码的可读性和可维护性。Elasticsearch是一种基于Lucene的分布式、RESTful搜索和分析引擎,广泛用于实时大数据分析和...
以下是一些常用的安卓测试性能测试工具及其功能详解: 1. **AnTuTu Benchmark** AnTuTu是一款综合性的性能测试工具,它可以对设备的CPU、GPU、内存、存储等多个方面进行全面测试,并给出综合评分。通过AnTuTu,...
首先,让我们深入理解Elasticsearch的Java API。Elasticsearch提供了Java REST客户端,允许开发者直接通过Java代码与ES集群进行交互。这个工具类可能包含了如索引文档、查询、更新和删除文档等基本操作的封装,以及...
elasticsearch和elasticsearch-head-master包安装及其使用
总结,YSCB-Elasticsearch压力测试工具是评估和优化Elasticsearch性能的重要手段。通过使用这个工具,我们可以深入了解Elasticsearch在不同条件下的性能表现,从而做出更明智的决策,提升系统的整体性能。在实际应用...
在实际开发中,为了方便操作Elasticsearch,开发者通常会封装一些工具类,如"ElasticsearchUtil",以便更高效地执行常见的查询、更新、删除和创建等操作。 ### 查询数据 默认查询通常是基于索引来获取匹配的数据,...