原创声明:本文首发腾讯云·云+社区,未经允许,不得转载
esrally是一款用于ElasticSearch的开源压测工具。默认情况下,其工作方式是:在线获取其位于海外主机上的数据集,然后在本地执行压测。因此,在国内网络情况下(或某些没有网络的主机上),在线获取数据集这一步骤将非常耗时甚至无法完成。
官网文档:https://esrally.readthedocs.io/en/latest/
然而,官网文档中,对于离线使用的方法基本是含糊其辞,几乎无法参考。
下面,通过实践和摸索,介绍一下其离线使用的方法。
腾讯云主机CVM:CentOS 7.6 IP:10.0.0.15
ElasticSearch实例:ES 7.5.1 IP&PORT:10.0.0.149:9200 UserName&PassWord: elastic,QAZwsx123
无需卸载CentOS7自带的python2.7,直接安装python3即可
如果不安装 python3-devel.x86_64,后面执行pip3 install esrally,就会报错。
yum install python3 python3-devel.x86_64 -y
https://www.oracle.com/java/technologies/javase-jdk13-downloads.html
然后rpm安装
rpm -ivh jdk-13.0.2_linux-x64_bin.rpm
配置环境变量,在 /etc/profile文件的末尾加入以下内容
export JAVA_HOME=/usr/java/jdk-13.0.2
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
并执行下列命令使环境变量生效
source /etc/profile
注意:需删除CentOS7自带的git 1.8版本。
执行下列命令
pip3 install esrally
任意路径执行下列命令
esrally configure
看到上图,即表示安装完成了。
特点:先下载数据集,然后解压,再进行压测,耗时非常久,动辄2-3小时甚至更久
最令人头疼的是,每次运行,都要重新在线下载。
任意路径下执行下列命令,等待结果即可(我们默认使用数据集 geonames)
esrally race --pipeline=benchmark-only --target-hosts=10.0.0.145:9200 --track=geonames --client-options="basic_auth_user:'elastic',basic_auth_password:'QAZwsx123'" --challenge=append-no-conflicts
我们依旧以 geonames 数据集为例
我们在elastic官网github上可以看到esrally的数据集相关描述 https://github.com/elastic/rally-tracks
通过查看 rally-tracks/download.sh,我们可以看到,所有数据源都是从一台亚马逊主机上下载的
通过阅读代码,我们知道:数据集的主路径在 http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora
通过查看 rally-tracks/geonames/files.txt文件,我们知道了geonames的数据集名称叫 documents-2.json.bz2 和 documents-2-1k.json.bz2 。
因此,我们尝试组合上述地址,使用浏览器访问:
http://benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames/documents-2.json.bz2
我们发现,数据集可以下载了。
同理,其他数据集,也可以通过这种方式进行手工下载。
此小节依旧以geonames为例。
数据集下载完成后,需要放置在CentOS的如下路径,若没有geonames路径,则手工创建:
任意路径执行下列命令(务必在命令最后使用 --offline参数):
esrally race --pipeline=benchmark-only --target-hosts=10.0.0.145:9200 --track=geonames --client-options="basic_auth_user:'elastic',basic_auth_password:'QAZwsx123'" --challenge=append-no-conflicts --offline
如上图,离线压测直接开始,无需漫长的等待。
当然,这一系列的操作,目的是为了,下次进行压测时,直接可以使用上面离线数据,而无需漫长地等待在线下载了。
最后,我们可以看到压测过程如下图。
【全文完】
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。