Tableau Graceful Restarter Application: PET Restart
July 21, 2016
, , , ,

PET RestartLast week I had the opportunity to show some of our solutions at ISATUG (International Server Administration Tableau User Group). One of my topics was graceful restart, because, yes, I still find it so useful that I want to share this goodie as much as I can. And to share something that actually works in practice I wrote a small plugin for our very-best Palette Enterprise Tabadmin (we call it pet) distribution that works standalone and can do the graceful restart magic what I explained in Graceful Restart Part1 and Part2.

The Video with the Star (uhm, yes, with me)

This video shows the basic usage / use case: we have a nice simple server. We’d just like to switch the vizql processes to debug mode to find out some interesting behaviour. Previously it wasn’t possible without a full tableau server restart, but using this free open source tool you can do it without interrupting your users.

Now, let’s see how you can get it and what it can do for you.

Where can I get it?

The project’s github page is but if you are not ready to build it from sources just grab the binary jar file from You need Java 8 to run it but hey, this is 2016, you should have Java 8 already anyway.

How can I use it?

Enable Balancer Manager

First of all, you need to fix / enable the balancer-manager portal in httpd.conf.templ  located in (installdir)\Tableau\Tableau Server\(version number)\templates\ . Even it seems it’s enabled by default, don’t be confused, you need to change this part:

to this:

As I wrote in this article you always need to issue a tabadmin configure  and restart  after you change a template, but in fact, after tabadmin restart  it’s enough to kill the apache process to use this new configuration.

Now, if you navigate to your tableau server’s /balancer-manager url you should see the balancer manager portal where you can control your worker routes.


You need JMX since the tool reads out the number of active connections from the JMX ports. That can be enabled by

But the whole process and its impact are described here:

Restart processes

The process is the same as described in Graceful Restart part2. In case of web apps we put the worker in drain mode and wait until JMX reports no active sessions. When that happens we just restart the worker process using the new configuration values. For other processes like Redis (cache), Apache (gateway) or Postgres (repository) we use other graceful reload methods as described in part1.

It’s also advised to test the tool in simulation mode. Simulation doesn’t restart any of the processes but rather goes through all the steps before an actual restart. It is recommended to run a simulation before issuing any restart commands to avoid possible failures. An example where JMX is disabled on vizqlserver:

If all good, you can start restarting your services. All command line options are available if you just start the tool without arguments:

java -jar pet-restart-1.0.jar 

Gracefully restart VizQL Workers:

java -jar pet-restart-1.0.jar -rv

Non-gracefully restart VizQL Workers as fast as possible:

java -jar pet-restart-1.0.jar -rv -f --wait 1

Reload the Repository’s configuration file:

java -jar pet-restart-1.0.jar -pg

For more options check the docs here: 

Limitations / TODOs

In current format, pet-restart only works on a single node configuration. Don’t panic, we’re working to make it multi node compatible using tomcat shutdown ports instead of local process kills.
Tamás Földi

Related items

/ You may check this items as well

sync frelard

Tableau Extensions Addons Introduction: Synchronized Scrollbars

At this year’s Tableau Conference, I tried t...

Read more

Tableau External Services API: Adding Haskell Expressions as Calculations

We all have our own Tableau Conference habits.  M...

Read more
Scaling Tableau Image

Scaling out Tableau Extracts – Building a distributed, multi-node MPP Hyper Cluster

Tableau Hyper Database (“Extract”) is ...

Read more