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

Tamás Földi

Director of IT Development at Starschema
Decades of experience with data processing and state of the art programming. From nuclear bomb explosion simulation to distributed file systems. ethical hacking, real time stream processing practically I always had a great fun with those geeky ones and zeros.
Tamás Földi
  • Syed Rehman

    Hi Tamas,
    It is really excellent and exciting article but seems little advance to me…. I am struggling to be able to Dynamically Increase and Decrease “# Backgrounder processes” on Tableau 9.0 server to dynamically balance the server load.

    Can you please help me here by providing what shell script I need to run i-e some sample script or some more detail on step by step commands which can change # of backgrounders on server.
    Really appreciate.

Related items

/ You may check this items as well

Pasted image at 2018_01_09 04_59 PM

Python Experiments in Tableau 1. – Add live currency conversion to Tableau Dashboards using TabPy

Last week I had the opportunity to show some of ou...

Read more
Tableau Docker

HOWTO: Tableau Server Linux in Docker Container

Last week I had the opportunity to show some of ou...

Read more
Tableau Consistency Checker

Tableau Filestore Consistency Checker – How Repository Maps to Filestore

Last week I had the opportunity to show some of ou...

Read more