Load Testing Reporting Services

This question came across one of our internal discussion aliases, and it wasn't the first time I had seen it... so I thought it might be interesting to other people as well.

Oftentimes, when people configure a load testing tool they set it up so that all of the connections come from the same logical user.  However, in Reporting Services we have a feature which prevents an authenticated user from performing a denial-of-service attack against the server.  We do this by limiting the number of operations that any given user (based on the user's name) can be performing at any given time.  When you hit this limit, you will get an error message like this:

There are currently too many requests in progress for user: "ABC\XYZ". Please wait until the current requests have finished processing before issuing any more.

At this point, there are basically two ways of resolving this issue:

  1. Change your test scripts/application to spread the requests across multiple logical users.
  2. Alter the rsReportServer.config file to extend the number of requests a user can have active.  The setting is the <Configuration> section and it is the "MaxActiveReqForOneUser" property.  The whole entry is this: <Add Key="MaxActiveReqForOneUser" Value="999999" />.

Note that this setting can also be useful if your users are not talking directly to the server, but are instead going through an ASP.Net application which is always impersonating the same user when accessing SSRS.