5 Replies Latest reply on Jan 31, 2017 7:59 AM by Toby Erkson

    VizAlerts Effort and Performance Impact on  Tableau Server

    Will Horton

      I am in the process of evaluating VizAlerts for pushing emails to around 1,000 recipients. I am having  trouble finding any info on the following:


      1. What is the level of effort to install VizAlerts. All of the prerequisites are in place.

      2. VizAlerts will need to be installed on the Tableau Server, how will it impact server performance?

           -Currently running on 3 nodes, 32G RAM each. More resources can be added.

      3.Which factors should I be focusing on for long term performance?



        • 1. Re: VizAlerts Effort and Performance Impact on  Tableau Server
          Matt Coles

          1. If you do a good job following the instructions on the Install Guide, approximately an hour, plus however long the Server restart takes. If you've got a more complicated external load balancer / proxy set up, maybe a bit longer.


          2. VizAlerts can run on a server that is not running Tableau Server. The amount of work that it does locally is not large--most of the work is being done by Tableau Server itself in exporting views to CSV / PDF / PNG. We are running 169 separate VizAlerts subscriptions right now, with five concurrent threads. The biggest workload we have in a single 15-minute cycle is 63 VizAlerts. The effect on our the 16-core hosts we use to power VizQLServer, DE, and DS is negligible.


          3. The way to manage performance impact is by keeping the timeouts reasonable, so that alerts are expected to execute quickly, and keep the number of threads to what your system can handle. It's quite simple to do a slow rollout of VizAlerts at your company, and gauge how the impact it is having as you go. Another way to manage things is to identify Simple Alerts where lots of people have subscribed, and have them move to Conditional Subscriptions (a feature in Tableau Server 10.1), which will offload the work to Backgrounder Processes, and be more efficient, or convert them into Advanced Alerts, which will enable you to render a single email and push it to multiple email addresses rather than process it many times.


          An issue that you might run into is that the actual emailing portion of VizAlerts is not multi-threaded. That is, even though multiple VizAlerts can be processed in parallel, a single Advanced Alert which pushes the same email to 1,000 individual addresses will still be run in series. None of the alerts we run on our Server have that large a volume, so I can't speak to issues that could cause from direct experience. Jonathan Drummey or Toby Erkson or others here might have some experience on that?

          1 of 1 people found this helpful
          • 2. Re: VizAlerts Effort and Performance Impact on  Tableau Server
            Jonathan Drummey

            Hi Will,


            1) I've installed VizAlerts from scratch on a new machine (including installing Python & modules) and gotten the test alerts running in under an hour. Usually where it gets slow is with regards to permissions in terms of things like the VizAlerts machine having permissions to access Tableau Server and permissions to send emails via your email server.


            Where the level of effort is more indeterminate is configuring the "who gets what alerts" piece, depending on how you set that up you can expect to take at least an hour at minimum to do your set-up and test it, if you're getting into more complicated views and building out advanced alerts with complex message bodies with multiple attachments with user filtering via custom content references then it might take several hours to get it all going & tested.


            When I first deployed VizAlerts I had a situation where exactly what data was going to be in the data pipeline was rather unpredictable and I had filters to test for it (so if the data wasn't good the alert wouldn't go out) but it was hard to set up a full test scenario. In that case the time from configuration to live deployment was a few days as I first ran the alert in production just sending alerts to me and verified that it was working over a long enough period of time to be confident that I could change the distribution to the full list of recipients.


            2) Essentially VizAlerts is running as another user on Tableau Server. The overhead for the base process for VizAlerts checking schedules is pretty minimal, then on each schedule there is 1 viz downloaded for each subscription. In the case of Advanced Alerts there can be additional viz downloads for each custom content reference (VizAlerts tries to batch these as much as possible). So if you have 1 advanced alert that is set up to deliver 1,000 customized emails once per day where each email has a user-filter for a per-user PDF attachment then that's downloading 1,001 vizzes per day. Without knowing how complicated the viz is and how long it takes to render & download I can't give your more info, you'll need to determine that yourself and use your existing sizing/performance metrics to give you a sense of what the impact would be.


            3) We don't have a ton of data on this, so this is a combination of a bit of history and some educated guesses:


            • You'll certainly need to monitor schedule frequency vis-a-vis complexity & volume of alerts & other activity on Tableau Server. For example some people have used VizAlerts to do big monthly batch emails, that could bog down Tableau Server.
            • Another factor is that although VizAlerts is multi-threaded, a single alert is single-threaded. So in the 1 advanced alert = 1,000 emails example if each email includes a customized viz that takes 5 seconds to render and download and another second to process that's 6,000 seconds = 1 hour and 40 minutes to process. You can reduce the total time to process by splitting that alert into separate alerts that can then run in their own threads.
            • If you're sending to groups of people then consider setting up VizAlerts to email a single distribution list rather than all the individuals in the group.
            • If the same emails are going to people then that rather than having one row per recipient in your trigger viz consider concatenating the email addresses and the alert into a single long to/cc field. This can be done using table calculations in Tableau or in SQL outside of Tableau.
            • If you're sending out individualized emails via advanced alerts see what you can do to put the individual details into the text of the header, body, & footer (that get downloaded as part of the Advanced Alerts trigger viz) rather than use custom image, PDF, or CSV content references that would require additional downloads from Tableau Server.
            • Automate as much of the "who gets what" part of configuring Advanced Alerts as possible whether using SQL queries, Excel formulas, and/or calculations in Tableau. It's all to easy to fat-finger some filter criteria in a custom content reference and then have it fail to download.



            1 of 1 people found this helpful
            • 3. Re: VizAlerts Effort and Performance Impact on  Tableau Server
              Will Horton

              Thanks Matt, that is very helpful!

              • 4. Re: VizAlerts Effort and Performance Impact on  Tableau Server
                Will Horton

                Thank you Jonathan, also VERY helpful information!

                • 5. Re: VizAlerts Effort and Performance Impact on  Tableau Server
                  Toby Erkson

                  Matt & Jonathan pretty much covered it all.


                  I'm a dummy when it comes to Python and my servers are in a default "no internet access allowed" data center (naturally there are exceptions that are handled by our firewall/networking team) so installation for me entails getting the Python bits packaged together, copied from my laptop and saved to my server, then remote desktoping into my server and installing.  One does need to know how a basic Tableau Desktop workbook works as well as reading the comments in the vizalerts.yaml in order to fill both out properly as part of the configuration process.


                  It's not an installation as easy as installing Tableau Server but it's not really difficult, either.  Installation isn't long and there is no need to restart the Tableau Server (yeay!).  The biggest learning experience will be understanding Advanced Alerts due to the high flexibility they give   This isn't a bad thing in my opinion.


                  I have just a couple VizAlerts and they are short and fast.  They do not send pictures or vizes, simply textual warning messages so they are fast and don't impact my 8 core environment.  VizAlerts hasn't really taken off where I work and only a couple people here-n-there have attempted to use them.  I think advanced alerts takes a programmer's mindset, it's not something Jaque Salesperson will pick up and use (let alone a manager) unless they are unusually savvy.  This is where simple alerts (via Tableau Server or VizAlerts) is best for such folks.