/var/log/jsoizo

メモ帳 技術とか趣味とか

ElasticSearchの性能検証の環境構築&実行手順

背景

ARMアーキテクチャのCPU(aarch64)版のElasticSearchを負荷試験して、
どういう結果になるかを見ようとしている。
そのための環境構築をやっていく。

サマリ

  1. Amazon EC2でElasticSearchサーバを建てる
    • A: m6g.xlarge x3台
    • B: m5.xlarge x3台
  2. ベンチマークサーバを建てる
    • m5.xlargeくらいで
  3. 1台につき数回ずつベンチマーク実行

※ ElasticSearchのサーバを3台建てるのはインスタンスの誤差をなくすため

ElasticSearchサーバの作成

www.elastic.co

を参照してやっていく。
x86_64でもaarch64でも手順は変わらないので、
AMI選択時の以外はすべて一緒でやっていく。

インスタンス作成は割愛。
インスタンス作ってSSHする。

リポジトリを追加

sudo vi /etc/yum.repos.d/elasticsearch.repo  

以下通り記述

[elasticsearch]  
name=Elasticsearch repository for 7.x packages  
baseurl=https://artifacts.elastic.co/packages/7.x/yum  
gpgcheck=1  
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch  
enabled=0  
autorefresh=1  
type=rpm-md  

ElasticSearchをインストール

sudo yum install --enablerepo=elasticsearch elasticsearch  

ElasticSearchを起動

sudo systemctl start elasticsearch.service  

curlを投げて返ってくることを確認

curl -X GET "localhost:9200/?pretty"  
  

ElasticSearchの設定変更

www.elastic.co

オフィシャルのimportant confgurationに沿って /etc/sysconfig/elasticsearch を直していく。
個別の設定項目については書いてあるとおりなので特に触れないが、
ヒープサイズは実際のRAMの半分を目安にしましょうということなので8gを指定した。

ES_JAVA_OPTS="-Xms8g -Xmx8g"  

また、シングルノードで動かすので、 /etc/elasticsearch/elasticsearch.yml に以下を追記した。

network.host: 0.0.0.0  
discovery.type: single-node  

ベンチマークサーバの作成

esrally.readthedocs.io

同様にオフィシャルの手順を参考に構築していく。
インスタンス作成は割愛。タイプm5.xlargeのAmazon Linux 2。

EPELリポジトリを有効にして

sudo amazon-linux-extras install -y epel  

python3, git, pbzip2 gccのインストール

sudo yum install python3 python3-devel git pbzip2 gcc  

rallyのインストール

python3 -m pip install --user esrally  

PATHを通す

export PATH=$PATH:~/.local/bin  

ベンチマークの実施手順

ベンチマークサーバから以下を実行する( ${hostname} は適宜変更)。

esrally --track=pmc --target-hosts=${hostname}:9200 --pipeline=benchmark-only   

Excel等で集計するためにベンチマーク結果ファイル(csv)の設定をしておくと良い

--report-file=/path/to/result.csv  

もしテストデータのダウンロードに時間がかかりタイムアウトした場合こういうエラーが出る。

[WARNING] Could not terminate all internal processes within timeout. Please check and force-terminate all Rally processes.  

が、そのままダウンロードは続けてくれるのでその場ではキャンセルしないほうが良い。
ただしその後の処理(解凍等)をやってスッと止まってしまうので、、、

[INFO] Preparing file offset table for [/home/ec2-user/.rally/benchmarks/data/pmc/documents.json] ... [OK]  

と出たあたりで止めて再実行するのが良いと思われる。

参考

www.elastic.co

qiita.com