Slow Startup of SQL Reporting Services 2008 in Nat

2020-03-03 09:18发布

问题:

We are experiencing a slow start up time on the first report request of the day, or when there have been no report requests for an unknown period of time. In SQL Reporting Server 2005 installations we would set up the App Pool to avoid recycling the Reporting Services applications.

However, my client installed SQL Reporting Server 2008 on Windows Server 2008 in Native mode. There is no IIS installation that I can locate. I've checked through the SQL Reporting Service Configuration Settings, the Help files and forums and have not located a solution for this problem on a Native installation.

How can I control the recycling of the Reporting Services application when installed in Native mode?

回答1:

I did not find the parameter referenced in tcc'sresponse. However his response did clue me in to the existence of configuration file; I did find a page that had detail on the contents:

MSDN: How to: Modify a Reporting Services Configuration File

In it I found the RecycleTime parameter. It defaults to 720 which feels like the 20 minutes or so it took to time out. I set it to 28800.

I restarted the Reporting Services service for good measure, and accessed the site. It took the usual minute or two to come up and during that time the server was working hard. It is snappy now; I will test throughout the day to see if this keeps Report Services from recycling the process and rebuilding every 20 minutes and report back to this site.



回答2:

I believe the solution is to add a ProcessTimeout key in the rsreportserver.config file. There is this key in this file from the default installation but it is commented out. I'm not sure if this is minutes or seconds, but I modifed it to 28800 and the process was still running first thing this morning after no activity for over 12 hours. The first report loaded in a few seconds.

The file is located in ~/program files/microsoft sql server/msrs10.mssqlserver/reporting services/reportserver

I also modified the 7200 in this file.



回答3:

SQL Server 2008 does not use IIS, which is why the RecycleTime parameter moved to the RS config file. This also means that you can install the report server on your database server for better performance, without also having to install IIS.

The default RecycleTime of 720 (12 hours) should be reasonable for a report server that is only active during regular business hours. Nevertheless I have the same issue, even though I schedule a report subscription to run at 7:30 AM every weekday to cause the report server to initialize for the day.

I am wondering now if the RecycleTime parameter really is specified in minutes or if this might be a documentation error. I am going to try a larger value.



回答4:

I'm running SQL Server 2008 R2, and there are two settings (which were initally commented-out) in my rsreportserver.config that I uncommented and configured. My values are shown below:

<Add Key="ProcessTimeout" Value="4320" /><!-- seconds -->
<Add Key="ProcessTimeoutGcExtension" Value="30" /><!-- seconds -->

At the time of this writing, these config elements are not documented in the MSDN docs for the rsreportserver.config file for SQL Server 2008 R2, however there is a KB article that briefly describes them under More Information:

There are two configuration settings that determine how long the Process Monitor waits for service activity before stopping the service. These settings are defined as follows:

  1. ProcessTimeout
    This setting applies to any operation that Reporting Services is performing.
  2. ProcessTimeoutGcExtension
    This setting applies only if garbage collection is in progress, and the ProcessTimeout value was reached.

Using the ProcessTimeout setting kept my SSRS instance awake, and setting the RecycleTime setting to a suitably large value (in my case 30 days, or 43,200 seconds) helped stave off the mandatory recycle that is incurred when that time span elapses.



回答5:

By setting RecycleTime to 28800 you are only increasing the time between slow startups. It will still take time for the first report to run after the 480 hours. You can set RecyleTime to 0 to stop it recycling if this helps.

If this is not an option you can keep it alive by a number of methods such as:
1.) Scheduling a dummy report in SSRS Report Manager Web site (My favoured approach)
2.) Scheduled Script

I realise this is an old question but it's not well documented, hope this helps someone out there.