ローカルPCのAlteyx Designerで実行すると、30分程度で完了するワークフローがあります。
それをAlteryx Server上で実行すると、5時間かかって終了しました。
調査のためにAlteryx Serverがインストールされているサーバマシン上のDesignerで実行したところ、15分で完了しました。つまり、サーバマシンのスペックには問題ないことが分かりました。
ワークフローの内容としては、あるDBからテーブル一覧を取得し、その後マクロ内で各ビューをyxdbにして保存するというものです。
サーバマシン上のDesignerで実行した際、パフォーマンスプロファイリングを有効にしたところ、マクロの部分が一番時間がかかっていました。
マシンのスペックに問題が無いのにもかかわらず、Alteryx ServerのGUIから実行すると遅くなるのはなぜなのでしょうか。
アドバイスいただけますと幸いです。
@Chikuma_Murakami GUIで実行する場合、サーバマシン上のDesignerで実行するよりも処理の時間は長くなります。ですが、15分➡5時間は流石に何かがおかしい感じがします。
長くなる理由は、GUIでJob実行する際は以下のような処理がなされるからです。Designerで実行する場合は④のみですので、①~③が追加でかかるイメージです。
①キューに入る
②設定したJob同時実行可能数の既存Jobが走っている場合、終わるまで順番待ちする
③Mongo DBからWFのyxzpファイルをロードし一時フォルダに展開する
④WFを実行する
※WFを実際に処理するサービスは”Engine”になるのですが、ServerではGallery->Controller->Worker->Engine、DesignerではDesigner->Engine、とEngineサービスを走らせるまでの経路が異なります。細かい話ですが・・・
従いまして、まずは5時間かかった理由が、「①・②において、キューで長いこと待たされていなかったか?」、「③においてWFのyxzpが異常にファイルサイズ重くなっていないか?(マクロ内のyxdb出力をアセットに含めてServerにあげていると、結構重たいと思います)」といった点が最初の確認ポイントかと思います。
また、一度マクロ内のyxdb出力を無効にした状態で実行し、実行時間に差が出るか見てみるのもいいと思います。これにより、ボトルネックがDB接続なのかyxdb出力なのか、ある程度切り分けできそうです。
可能でしたら、Engine Logを見てみるのもトラブルシューティングで有用です。Serverのシステム設定はデフォルトでEngine Logは無効になっていますので、デフォルトのままでしたら、Engine Logの有効化をお勧めします。(公式サポートに問い合わせるときにログがあると、先方も対応しやすいようです)
また、Serverの構成がマルチノード(Workerノードを複数ホストで運用)の場合、Workerノードとデータソース間のネットワークのレイテンシーが律速になっていることが考えられます。貴社のServer構成がわからないため、いったん詳細は省きますが、マルチノード構成をとっている場合は、その旨教えてください。