Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2008 Forums
 Analysis Server and Reporting Services (2008)
 SSRS 2008 R2 RecycleTime and Slow Startup

Author  Topic 

dwatts
Starting Member

1 Post

Posted - 2011-06-28 : 16:28:15

Everyone may know the problem where the SQL Server seems to "fall asleep" and then your initial request to it takes forever. The issue is that the server recycles the app pool or app domain as they call it in their log automatically based on the recycle time value (in minutes) found in the rsreportserver.config file under the <Services> tag. The default is 720 (or 12 hours). I've read many solutions that people simply increase this value to 2880 or something like that so that the AppDomain doesn't shut down. This is really only a band aid because after this amount time passes, the app domain will still be recycled and a new one created in its place. Also, there's other reasons why the app domain might recycle including Memory shortages, configuration changes, and Reporting Service/Machine restart.

It seems that the time-consuming part is the first request to the new app domain when it loads up all its structure information. If no request is made, it doesn't seem to load until it sees a request. This is bad for any user who gets that first request to the server and their report either times out or takes a long time to load.

At this point the only solution I can find is to write a service that makes a request to the reporting web service URL at certain intervals. This is not an ideal solution as polling the service is not as robust as subscribing to a shutdown event and firing our load request at that time. My question is to ask if anyone knows if there's a way to subscribe to the SSRS 2008 R2 web server's app pool shut down or start up events to be able to run a program so I can kick off the load request. If that's not possible, is there a way to read the Reporting services database and tell when the next scheduled recycle is due?

As it stands now, you might know that the recycle time is twelve hours but you don't know at what time that 12 hours will be up next or when it was out last so knowing the recycle time doesn't do a lot of good.

For instance, you could be running the load request every hour and your recycle time might be 12 hours. Say recycle time is up at 2:05AM and you've just ran your load request at 2:00AM. It will be 55 minutes until your load request runs again or until the first person requests a report, which might time out based on the app domain load time. This is not a good solution and potentially renders your polling server wake up code pointless.

Does anyone know an elegant solution?

Thanks


Dwatts
   

- Advertisement -