Optimizing Performance of Tableau Server on AWS
This is archived content
Deployments on public clouds continue to be supported but the content for third-party public cloud deployments is no longer updated.
For the latest Tableau Server deployment content, see the Enterprise Deployment Guide(Link opens in a new window) and the Deploy(Link opens in a new window) section of Tableau Server help.
For those customers who have access, we recommend Tableau Cloud. For more details, see:
- Tableau Cloud Manual Migration Guide
- Tableau Cloud Trial for Admin(Link opens in a new window)
- Tableau Cloud: Get Started for Admin(Link opens in a new window)
Optimizing the performance of Tableau Server when it is installed on an Amazon EC2 instance in the AWS cloud adds another dimension to tuning your Tableau Server solution. This section discusses tuning Tableau Server for the cloud. For general performance tuning information, see the Tableau Server Performance Overview. For information about tools you can use to help optimize performance, see Performance Resources.
It is important to keep in mind that every deployment of Tableau Server on AWS is different because everyone's workload is unique. Your company’s employees are different, leverage different data, ask different kinds of questions, and have different business needs than other companies. For this reason, we recommend testing your Tableau Server workloads on a variety of different Amazon EC2 instance types before putting them into production. The demands of your workload will likely be influenced by the following factors:
Heavy, light, or moderate Tableau Data Extract use
The proportion of people who view vs. interact with visualizations and dashboards
Tableau Data Extract refreshes which occur during or after working hours
The number of concurrent individuals during any given period
View and dashboard complexity
Size of the community who leverage Tableau Web Authoring
There are some general guidelines that you can follow to increase the likelihood of choosing the right instance type. Using TabJolt, a free scalability testing tool built by the Tableau, you can run load tests across your Amazon EC2 Instances to test for performance and scalability using the following metrics:
Number of virtual users executing
Average Transactions per Second
Average Success Response Time
Average Error Rate (the test considers any viz that takes > 60 seconds to render an error)
Performance Best Practices
The following performance best practices may be useful for you to reference as you deploy Tableau on AWS:
Always run at least 8 cores per Amazon EC2 Instance
Even with a relatively low number of users, EC2 Instances with fewer than 16 vCPUs (the equivalent of 8 cores), do not consistently perform well. For example, one r4.4xlarge instance, which has 16vCPUs, is able to handle more users, with a lower response time and error rate, than two r4.2xlarge instances, which have 8vCPUs each. This pattern is consistent as you scale up, with four 16vCPU instances and two 32vCPU instances dramatically outperforming eight 8vCPU instances.
The workload greatly determines the results
The robustness of your workload goes a long way in determining how it performs on different EC2 instance types. Using a different set of dashboards, for example, you will see noticeable differences in performance from the same underlying virtual machine instances. Attempting to compare performance using any other workload than your own is not very useful.
More CPU is better
CPU is often the main bottleneck for Tableau Server performance. In general, when you want to do more with Tableau, we recommend you add more and better CPU.
Make sure your Amazon EC2 instance has enough RAM
When we ran the same workloads on instances with less CPU but more RAM, we experienced higher transactions per second (TPS), lower response time, and lower error rate. EC2 instances with too little RAM can cancel out the benefit of high-end CPU. In production, run with at least 30 GB RAM but shoot for 8 GB of RAM per core. While it is important to choose an instance with a lot of CPU, running Tableau Server on instances starved for RAM is going to lead to low performance—no matter how much CPU you have.
You want to use SSD-based volumes, but may not need Provisioned IOPS
Tableau Server encompasses a number of processes and components, including an industrial strength database (PostgreSQL) that stores the system’s metadata. Tableau Server needs a reasonable level of disk throughput in order to perform well, and we advise using Amazon Elastic Block Store (EBS) SSD- based volumes only. Magnetic disks lack the throughput needed to handle the database’s requests effectively. In our test, we ran both general purpose SSD (gp2) and EBS-provisioned IOPS volumes, with two EBS disks being used for most tests. Most EBS volumes had 1500 provisioned IOPS. After running the tests again with General Purpose SSDs, our results were nearly identical with moderately demanding workloads. While there are certainly cases where Provisioned IOPS will make a noticeable difference in the performance of your Tableau Server workloads on AWS, you shouldn’t assume that you need Provisioned IOPS by default. The best way to find out, of course, is to test your Tableau Server workloads yourself.
Do your own testing with TabJolt
Your workload and the configuration of your Amazon EC2 Instances can make a major difference in how Tableau Server performs for you. The flexibility of EC2 makes it easy to determine combination of settings and instance types to suit your needs. For example, isolating a few RAM-and-CPU hungry processes on several machines instead of running them on all machines in your cluster makes a huge difference in transactions per second (TPS). Ignore the temptation to compare performance characteristics of different workloads. While this is admittedly fun to do, it isn’t very useful. Instead, use the same workload and tinker with your hardware and software configuration for best effect. AWS makes this very easy to do.