5 Replies Latest reply on Sep 20, 2010 4:05 PM by James Baker

    Tableau Server Performance

    Christoffer. Swanström

      When looking at the log files (from tabadmin ziplogs, in the subfolder vizqlserver/Logs in the zip file) I have noticed recurring lines similar to this:


      2010-09-17 12:12:43.663 (23b4): ACTION: Unlock session fa6deef.  Workbook = /views/Energie_Leistung

      2010-09-17 12:12:44.006 (23b4): ACTION: Lock session fa6deef.  Workbook = /views/Energie_Leistung

      2010-09-17 12:12:44.022 (23b4): ACTION: New Layout

      2010-09-17 12:12:44.038 (23b4): ACTION: Unlock session fa6deef.  Workbook = /views/Energie_Leistung

      2010-09-17 12:12:44.069 (23b4): ACTION: Lock session fa6deef.  Workbook = /views/Energie_Leistung

      2010-09-17 12:12:44.069 (23b4): ACTION: Unlock session fa6deef.  Workbook = /views/Energie_Leistung

      2010-09-17 12:12:44.756 (23b4): ACTION: Lock session fa6deef.  Workbook = /views/Energie_Leistung

      2010-09-17 12:12:44.772 (23b4): ACTION: Unlock session fa6deef.  Workbook = /views/Energie_Leistung

      2010-09-17 12:12:47.584 (23b4): ACTION: Lock session fa6deef.  Workbook = /views/Energie_Leistung


      This operation took about 4 seconds to complete but it's not clear to me what is going on here. I ran into this while investigating why opening a dashboard was slow. Can anybody shed light on what these lines are about and what one could do to reduce the time these operations take?




        • 1. Re: Tableau Server Performance
          James Baker

          This is the lowest level log, and as such doesn't record the request URLs (which are in a higher level log in subfolder logs/vizqlserver).  Each lock/unlock you see here is one request.  As the "new layout" happened a few requests before this, the request that took almost 3 seconds was probably the main "calculate and get the viz layout" request, which does a lot of things, from querying the data source to building visual models to laying out the structure of all the zones in a dashboard.


          Improving performance is a large and complicated topic overall.  Some of the main issues are 1) database speed, 2) the number/kinds of queries tableau needs for your combination of sheets/filters, and 3) Tableau Server caching and load.  Usually database query speed is the biggest factor.  Exctracting your data may speed up your queries, although in 5.2 that only gets you to the speed of roughly an "average" database, which is a big win for text/excel sources but not some other databases.  Tableau 6.0's extracts are a much bigger speed win, which we're very excited about.

          • 2. Re: Tableau Server Performance
            Christoffer. Swanström

            Thanks for you answer. I would still like to understand this a bit better. In my case I'm looking at a test server where I am sure I am the only user and at this moment in time the server was processing one single request. I can see in this log file all the database queries that are launched, and the longest of those takes about 3 seconds (creating a global temporary table for the context). To me it seems that these locking and unlocking events are taking way too long in proportion to the database calls.

            • 3. Re: Tableau Server Performance
              James Baker

              The locking and unlocking themselves take almost no time.  If you attach a text file containing 30 more seconds in each direction of the log, I might be able to give more commentary on what work is being done when.

              • 4. Re: Tableau Server Performance
                Christoffer. Swanström

                Hi James,


                here's the entire file where that snippet is from. Any comments on what's going with the session locking and unlocking would be appreciated.




                • 5. Re: Tableau Server Performance
                  James Baker

                  Okay, so the line immediately previous is the end of "LoadWorkbookFromDOM" - at this point we've connected to the data sources, but haven't fetched any data.  1.353 for that whole section is about an average value, by the way - more than the median, but not too much.


                  Immediately after the lines in question, we are setting the port sizes of the three views in your dashboard.


                  So to break this down, most of the time in between those two events is spent at other levels.  (The time spent between an opening Lock and a closing Unlock represents the time spent in the back-end server.)  Loading the workbook is done while the front-end server is asking the back-end server to create a session.  After that is complete (at 44.069) the front-end server renders the single-view page (with a masthead at top, comments/tags at bottom, etc) with an iframe inside it pointing to the back-end server.  The URL hitting the 'viewer' occurred at 44.756 I believe, at which point the background server sent back the javascript code of the thin-client.  The time between that moment and 47.584 is the client/browser downloading the necessary code and images, initializing the thin-client code, and running some preliminary metrics-collection code.  The browser then sends those metrics, along with the window (port) size of the dashboard, to the back-end server at 47.584.


                  At almost 3 seconds, this time span seems a little larger than normal.  Speed here is determined by your latency (network distance to server), bandwidth (throughput, size of pipe), and client speed (how powerful of a computer, and also which browser you're running makes a big difference).


                  From seconds 47 to 52 Tableau is actually retrieving the data and building visual models, and at second 54 your browser has finally loaded all of the images for different pieces of the viz.