#tableau #data17 [レポート] Tableau Server のチューニング: パフォーマンス SWAT チームによるヒント – Tableau Conference On Tour 2017 Tokyo
先日2017/04/18(火)〜2017/04/19(水)の2日間に渡り、ウェスティンホテル東京@恵比寿にて行われたカンファレンスイベント 『Tableau Conference 2017 On Tour Tokyo』。
当エントリでは、イベント1日目(2017/04/18)のテクニカルセッション『Tableau Server のチューニング: パフォーマンス SWAT チームによるヒント』についてその内容をご紹介したいと思います。
目次
セッション情報:概要
事前に公開されていたセッションの概要情報は以下となります。
Speaker: 野口 健二 レベル: Jedi タイプ: ブレイクアウトセッション 場所: スタールーム A
セッション内容レポート
パフォーマンス問題をどのように知るか
だいたい以下のようなタイミング、状況で問題が顕在化する事が多い。
特定するためのツール群
Tableau Serverに於いては、以下観点でそれぞれパフォーマンスの情報を知る事が出来る。
目的 | ツール | おおよそ掛かるであろう期間 |
---|---|---|
Windowsシステムのパフォーマンスを確認 | タスクマネージャー | Windowsユーザーなら すぐに動かせる |
ある指標でWindowsシステムの パフォーマンスを記録 | パフォーマンスモニター | Windowsユーザーなら おおよそ半日学べば動かせる |
分散構成のTableau Serverの パフォーマンスを一元的に記録 | TabMon | 前提はパフォーマンスモニターの スキルとTableau Serverのスキル。 その上で2〜3日学べば動かせる |
特定のワークブックの パフォーマンスを評価 | パフォーマンスレコーダー | Tableauユーザーなら おおよそ半日学べば動かせる |
Tableau Serverの 関連イベントを全て分析 | ログ分析(Logshark) | 前提はTableau Server管理者スキルと 動作環境。その上で 3〜5日あれば動かせる |
タスクマネージャー
[プロセス]ビューを使用して最もリソースを使用しているプロセスを確認。
- Windows タスク マネージャーの使用方法および Windows タスク マネージャーの問題のトラブルシューティング方法
- Tech TIPS:Windowsで負荷の大きいプロセスを特定する方法 (1/2) - @IT
パフォーマンスモニター
- 参考情報
- Tech TIPS:タスク・マネージャのパフォーマンス・タブの見方(Windows 8/Windows Server 2012編) - @IT
- Step-By-Step: Enabling Disk Performance Counters in Windows Server 2012 R2 Task Manager – CANITPRO
- 特徴
- 全てのWindowsマシンで利用可能
- 数百ものシステム指標から任意の指標を記録可能
- ニーズに合わせてサンプリング間隔と記録期間を選択
- 記録を確認し、Tableauサポートと共有
- プロセスがクラッシュした場合の対応
- *.dmpファイルを探し、ファイルの情報をTableauサポートチームと共有。
- ファイルの発生頻度を確認。
- 大量リソースを消費している事が原因でプロセスが強制終了した場合はログに以下のような行が表示される。
TabMon
- パフォーマンスモニターの記録を利用したパフォーマンス監視サービス。内容はユーザーが自由に設定出来る。オープンソースとして公開されている。
- tableau/TabMon: A Tableau Server performance monitoring service
- TabMon
- 全てのワーカーのパフォーマンス測定結果を1ヶ所にまとめている。
- Tableau ServerからJMXカウンターの情報を直接取得可能。
- JMX ポートの有効化
- Enabling JMX Ports is making the tableau Server... |Tableau Community
- Performance Monitoring your Tableau Server Environment | InterWorks, Inc.
- 画面イメージは以下。
パフォーマンスレコーダー
- 特定ワークブックのパフォーマンス低下に対し、問題の可能性を簡単に絞り込みたい場合に最適
- Tableau Desktop/Tableau Server双方で動作
- ワークブック パフォーマンスの記録と分析
- パフォーマンスの記録の作成
- パフォーマンスの記録の解釈
- Tableau Tips: 『パフォーマンスの記録』機能でビューのボトルネック箇所を探る | Developers.IO
- twbxをパッケージ化してログと一緒にTableauサポートに送付する事でサポートチームがそれを更に分析する事が可能に
ログ分析(Logshark)
- サーバーログを参照して発生したイベントを視覚化し、使用状況を把握する事が出来るパワフルなツール
- 元々はTableauで社内用に開発されたもの。現在ではOSSプロジェクトとして公開されている。
- tableau/Logshark: A Tableau log file analysis utility
- Introducing Logshark: Analyze your Tableau Server log files with Tableau | Tableau Software
- 以下の結果を簡単に確認可能
- 各Vizがサーバで読み込まれるのに掛かった時間
- バックグラウンダーがBusyであった程度とボトルネックが存在している可能性のある箇所
- サーバ設定を更新・変更した時刻
-
構成
- 実行例
- 参照イメージ
回避するための検討事項
ワークブックの設計
- ビュー内のフィルターの数を減らす
- 機能として使用出来るマークの数を検討する
- クロス集計を大量に使用しないようにする
- 各ダッシュボード内のビューの数を検討する
- 以下ホワイトペーパーは必読!(※ログイン必要)
- 効率的に作業できるワークブックの設計 | Tableau Software
データベースの設計
- 列は少ないほうが良い
- トラフィックが多いワークブックではマテリアライズド・ビューの作成も検討
- マテリアライズドビュー - Wikipedia
- DBの主要なディメンションにインデックスを付与
- ワークブックにデータソースフィルターを適用
- データ ソースからのデータのフィルター
- 複数のデータ ソースでのデータのフィルター
- 良く利用されるデータソースの抽出をパブリッシュして一元管理
- 抽出を最適化して関連のある列と行のみを含める事で、Vizの読み込み中にフィルタリングや処理が必要なデータの量を減らす事が出来る
- クエリアナライザー
- 殆どの商用データベースではクエリ分析ツールを利用可能
- 分析結果を取得してDB管理者と会話
Tableauトポロジ
Tableau Serverのプロセス数に関するTipsは以下。
- Tableau Server プロセス
- ユーザーからのトラフィックのピーク時にアクティブなバックグラウンダーがある場合、分散構成に拡張する事を検討、バックグラウンダーを別のノードで動かす。
- プロセッサとVizQLプロセスの比率は1:4以内にする
- パフォーマンスを低下させない範囲で、少ないプロセス数でキャッシュサーバを実行する事でシステムのオーバーヘッドを削減可能
- 分散構成の場合、クラスター全体でZookeeperの数は最大3または5に維持
VMリソースの割り当て
- VMを割り当てる場合、Tableauが『計算に大きな負荷が掛かるアプリケーションである』事を念頭に置いておく
- ユーザーに快適なパフォーマンスを提供し続けるにはCPUとメモリのリソースを確保する事が強く推奨される
- VMWareから公開されたホワイトペーパーでは『メモリとCPUを100%を確保』しておく事が推奨されている。これはTableauがリソースに対する優先権を持つように設定し、負荷が急上昇した場合に待つ必要が無いようにするという事
ウィルス対策(ソフトウェアへの対策)
- Tableauはレイテンシーの影響を受け易く、ウイルス対策(ソフトウェア)によってはユーザーが速度低下を体感するレベルにまで影響が出る事も。
- セキュリティソフトウェアの中にはフィルタドライバーとして動作するものも
- 会社のポリシーによってウイルス対策が必要な場合、ITチームと協力してTableauのディレクトリを除外リストに追加するのが最善
- アクティブスキャンを実行する必要がある場合、サーバーの使用率が低い時間帯にスケジュールを設定
エフェメラルポート
『エフェメラルポート』=特定の用途(プロトコルでの使用が推奨されておらず、一時的な通信のために自由に利用できるポート。「ephemeral」は「短命な」の意。(※参考: エフェメラルポートとは - IT用語辞典)
- TableauプロセスではTCP/IPを使用してお互いに通信するため、利用可能になっているポートの数がパフォーマンスに影響。
- Windowsサーバのデフォルトでは、49152〜65535のポートが解放されている
- 利用可能なポート数を増やし、Tableauプロセス間のスループットを向上可能
- 関連記事(これで合ってるかな?)
- Tableau Server Port Exhaustion Problems | Tableau Software
- この設定変更によってシステムのスループットを大幅に向上出来た例も
処理能力の強化
- リソースを融通しあう事で処理能力が制限される場合がある
- メモリの消耗によってパフォーマンスが低下している場合、メモリを追加する事で簡単に解決出来る場合もある
- パフォーマンスの問題が特定の時間でピークになり発生している場合、ピーク時の使用量をベースにリソースを追加するか、一時的なパフォーマンス低下を受け入れる
まとめ
という訳で、Tableau SWATチームによるTableau Serverのパフォーマンスチューニングに関するセッション内容のご紹介でした。こうしてみると色々な観点・ポイントで改善出来る要素がある事が分かりますね。情報を整理し、今後の展開に向けて活用していきたいところです。