Tableau

Tabjoltを使ってTableau Serverの負荷テストをしてみた

こんにちは。そしてお久しぶりです。開発G渡辺です!

弊社では受注実績などのレポートを表示するBIツールとして「Tableau」を採用しているのですが、分析したいレポート数の増大・データ量の増大・利用者数の増大により負荷に耐えられなくなり、レポート表示までにかなり時間がかかり利用しづらくなってきました。

そこで、Tableau Serverを運用しているAWSのEC2インスタンスのタイプを見直したいのですが、実際どのスペックがいいのかはなかなか決めづらいです。

今回はTableau社が開発したオープンソースのツール「Tabjolt」を使用し、負荷テストの検証を行いました。Tabjoltは一般的なWebアプリの負荷テストでも使用されるJMeterを使用したツールになっており、コマンドを打つだけで負荷検証を行うことができ、Tableau Serverに必要なスペックを検討することができます。

Tabjoltに関して、情報量が少なく、公式の手順も英語でなかなか苦戦したため、準備・使い方などを記事に残しておきます。

環境

今回Tabjoltの使用環境は下記になります。

  • Tableau Server(AWS EC2)
  • 自分のPC(Windows)
  • Tableau Desktop(自分のPCにインストール済)

Tabjoltのインストール手順(2023.1.29時点)

Tabjoltのインストール

こちらからTabjoltをインストールする。

特に理由はないですが、Tabjolt 2022.2.2をインストールしました。

Postgreのインストール

こちらからPostgreをインストールする。

最新版のPostgreでも問題ないとは思いますが、14.6をインストールしました。

インストール後、環境変数にて「C:\Program Files\PostgreSQL\14\bin」を指定しておきます。

JDKのインストール

こちらからJDKをインストールする。

今回はJDK17をインストールします。(多分このバージョンからじゃないとTabjoltのUI画面が起動しないと思う)

環境変数で「JAVA_HOME=C:\Program Files\Java\jdk-17.0.3.1」を指定しておきます。

SET JAVA_HOME=C:\Program Files\Java\jdk-17.0.3.1

をコマンドプロンプトで入力します。

パフォーマンス結果表示用のDBを作成する

pgAdmin4を開き、パフォーマンス結果を表示するためのDBを作成します。

DBUserName postgres
DBPassword tabjoltresults
DBServerName localhost
DBPort 5432
DBName perfresults

すべて上記の指定されたもので準備をしないといけないです。

pgAdminからDB名「perfresults」を作成する

Tooles > Query Toolで「CreateTabjoltResultsDatabase.sql」を指定し、実行する
するとパフォーマンス結果表示用のテーブルが作成されます。
C:\Program Files\tabjolt_binaries_2022.2.2\sql あたりにSQLファイルがあります。

ConfigureTabjoltで負荷テストを行うTableauServerを選択する

「C:\Program Files\TabJolt\ConfigureTabjolt.bat」を実行し、
負荷テストを実行するサーバーを記載します。
※この時JAVA_HOMEに設定がないと下のUI画面が表示されない
※インストール者以外が実行するときは管理者権限が必要な場合がある。
CMD上で実行する場合はCMDを管理者権限実行すること

Master Password:(必要な場合入力。今回は空白)
Server : 負荷テストしたいTableau ServerのURL
Username: 管理者アカウントのユーザー名
Password: 管理者アカウントのパスワード
にて入力します。

負荷テストを行いたいレポートを入力します。
例えば閲覧が多いレポートや、表示に時間がかかるレポートを選択すると良いです。
TSMへのログインを求められるため、こちらもTSM管理者アカウントのログイン情報を入力します
これで準備は完了です。

TableauServerの負荷テストを行う

コマンドプロンプトからTabjoltフォルダへ行き、コマンドを入力します。
「RunTabjolt.bat –t=testplans\InteractVizLoadTest.jmx –d=180 –c=15」
オプションコマンドの説明
–t
実行したいテストファイルを指定する
–d
テストにかける時間を指定する(秒単位)
–c
ビューを操作する同時ユーザー数を指定する
–r
テストの説明
–s
trueの場合はDBへ保存しない、falseはする。指定しない場合は保存する

試しに 「RunTabjolt.bat –t=testplans\InteractVizLoadTest.jmx –d=180 –c=15」
で実行してみました。

実行完了後、C:\Program Files\Tabjolt\vizes\PerformanceViz.twb
からパフォーマンス結果を画面で確認します。

いっぱいレポートがあるのですが、とりあえず「Key Performance Indicators」が見れればいいような気はします。このレポートはレポート表示のエラー率や、レスポンス時間などが表示されているので、ここでスペックの検証ができると思います。

例えば、ErrorRateが上の場合は0.129%だったため、15人が同時操作でエラー表示が0.129%ということになります。このパーセンテージが良いか悪いかはサービスレベルにもよると思います。

まとめ

今回はTabjoltを使って負荷テストを実施してみました。
パフォーマンスレポートの見方が理解できていないので、負荷テストの実施もかなりてこずりました・・・

ただこの負荷テストを指標としてスペック検証していくのはかなり有効だと思うので、
このツールを使いこなせば最適なスペックの選定ができるのではないかと思いました。

またいい情報が手に入れれば共有していきたいと思います!

ABOUT ME
Sota Watanabe
Sota Watanabe
トライステージに20年8月に入社。 開発経験はあまりないですが、日々勉強しながら取り組んでます! 趣味は競馬、銭湯です。