Team Foundation Server – Performance Fix

You’ve gotta see this post by Buck Hodges!  There is VERY heavy load on TFS, and it’s because in Beta 2 the refresh rate for Analysis Services was set to 2 minutes instead of the normal 60 minutes!  It’s a major Team Foundation Server performance problem when it’s installed directly out of the box.  Here’s a cut from the Buck’s blog entry.

Did you install your beta data tier in Virtual PC or Virtual Server and see a high CPU load while its running?  Even on real hardware, you may notice some load when nothing would appear to be going on.  Someone mentioned on an internal mailing list that the data tier CPU load for a combined app and data tier installed in Virtual Server was quite high, averaging about 50-70% with most of that time being used by SQL analysis services (msmdsrv.exe).

Check out his fix!

UPDATE:  I’2013-08-28 13:51:36’m going to include his fix here, in case his site is down, or he moves his blog entry.  But don’t forget to go check out Buck Hodges’ blog.  The following is a cut/paste from his blog.  I hesitate to quote so much, but this is such a critical issue that it needs the broadest possible exposure.  Once again, check out his post for more updates, and great information on TFS.

The warehouse was designed to run processing every hour. For demo purposes the period was changed to 2 minutes in beta 2. On a weak system or a virtual machine you will see this behavior.

Change the run interval on the app tier as follows.

  1. Stop TFSServerScheduler using ‘net stop TFSServerScheduler’.
  2. Go to http://localhost:8080/Warehouse/warehousecontroller.asmx using a browser on the app tier.  Click on ChangeSetting and enter the following values and then press the ‘Invoke’ button (3600 seconds = run once per hour).
    1. settingID: RunIntervalSeconds
    2. newValue: 3600
  3. Restart TFSServerScheduler using ‘net start TFSServerScheduler’.

Note: It is important to restart TFSServerScheduler, as the interval is cached and will not take effect until the next run.

You can also manually kick off the data warehouse.  Here are the steps to do so:

  1. Go to http://localhost:8080/Warehouse/warehousecontroller.asmx using a browser on the app tier.
  2. Click the β€˜Run’ link.
  3. Press the β€˜Invoke’ button.

 This will trigger a refresh of the reports.

Thanks, Buck!  We thank you, presenters everywhere thank you, and TFS performance thanks you!