esRally 压测工具安装

说明

建议安装最新版本的esRally,使用低版本压测最新的数据源会提示不兼容,仍然需要升级。可使用离线包进行安装
esrally安装包下载地址:https://github.com/elastic/rally/releases

环境依赖

  • Python 3.8+
  • Git 1.9+
  • JDK

服务器需要安装:

yum -y install zlib-devel
yum -y install python3-devel 
yum -y install bzip2
yum -y install bzip2-devel
yum -y install epel-release
yum install libffi-devel -y
yum install pbzip2

建议依赖环境安装完成之后,再重新编译安装一次Python3,否则启动esRally会失败

Python3安装

wget https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz
tar -xf Python-3.8.16.tgz 
cd Python-3.8.16
./configure prefix=/usr/local/python3
make && make install
mv /usr/bin/python3 /usr/bin/python3.bak 
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3 
python3 -m pip install --upgrade setuptools 
python3 -m pip install --user --upgrade pip
python3 -m pip install urllib3==1.25 

豆瓣/阿里源:
python3 -m pip install -i https://pypi.douban.com/simple/
python3 -m pip install -i https://mirrors.aliyun.com/pypi/simple/

启动虚拟环境(可选)

#创建虚拟目录v1
mkdir -p /data/python3/v1 && cd /data/python3/v1
python3 -m venv .venv
# 激活进入虚拟环境
source /data/python3/v1/.venv/bin/activate 

eaRally安装

tar -xf esrally-dist-linux-2.7.1.tar.gz
cd esrally-dist-2.7.1
sh install.sh
安装完成后esrally可执行文件的目录为:/usr/local/bin/esrally
启动./esrally 提示 ModuleNotFoundError: No module named '_bz2'
mv /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /usr/local/python3/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so

启动压测

压测数据准备,需要外网环境下载模拟数据

# downloads geonames track
curl -O https://raw.githubusercontent.com/elastic/rally-tracks/master/download.sh
chmod u+x download.sh
# download all data for the geonames track
./download.sh geonames
 
# downloads cars
git clone https://github.com/elastic/rally-teams.git ~/.rally/benchmarks/teams/default
tar -C ~ -czf rally-teams.tar.gz .rally/benchmarks/teams/default
cd ~
tar -xzf rally-teams.tar.gz

执行上面命令生成rally-track-data-geonames.tar文件和rally-teams.tar.gz文件放在服务器的~目录进行解压
本地Docker启动单机ES测试:

docker run -d \
  --name elasticsearch \
  --privileged \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
  -e "TAKE_FILE_OWNERSHIP=true" \
  --ulimit memlock=-1:-1 \
  -v /tmp/data/elasticsearch:/usr/share/elasticsearch/data \
  -v /tmp/log/elasticsearch:/usr/share/elasticsearch/logs \
  -p 10092:9200 \
  -p 10093:9300 \
  elasticsearch:7.9.2

执行压测:

./esrally race --pipeline=benchmark-only --target-hosts=127.0.0.1:10092 --client-options="basic_auth_user:'xxx',basic_auth_password:'xxx'" --track=geonames --track-params="number_of_shards:32,bulk_indexing_clients:128" --challenge=append-no-conflicts --offline --report-format=csv --report-file=/root/.rally/benchmarks/result_$(date "+%Y%m%d-%H%M%S").csv 

默认参数:
number_of_shards 2
bulk_indexing_clients 20

参考文档

压测参数说明
离线使用

posted @ 2023-06-08 14:35  Mr黄瑞  阅读(213)  评论(0编辑  收藏  举报