MSSQL Server Reporting Services: Black Belt Administration: "Governor" Capabilities: Report Execution Timeout - Page 9
March 21, 2005
Considering the Configuration File "Sweep" Setting
We need to consider a setting in the configuration file for Reporting Services before we can assume that we are really going to obtain an effective Report Execution Timeout. The RSReportServer.config file is yet another collection of settings whose importance in the administration of Reporting Services will become obvious after working with the application for only a brief time. RSReportServer.config houses a host of settings whose associations include such types as:
Of particular interest from the perspective of this article is the RunningRequestsDbCycle setting within the RSReportServer.config file. This is what I like to call a "sweep" setting, because it specifies how often an activity or characteristic is "evaluated." Specifically, the RunningRequestsDbCycle setting dictates how frequently the Reporting Services Report Server evaluates currently running jobs, to ascertain whether these activities have exceeded the respective Report Execution Timeout setting in effect. (The "degree of freshness" of executing job information in the Manage Jobs page is also dependent upon the RunningRequestsDbCycle setting.)
The RSReportServer.config file is located in the ReportServer folder of the Reporting Services installation folder. A common location on many servers might be the following:
C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer
To reinforce our understanding of the setting, let's open the RSReportServer.config file, and examine the setting we're discussing:
1. Right-click Start.
2. Select Explore to open Windows Explorer.
3. Navigate to the RSReportServer.config file (mine is located in the path shown above).
4. Right-click the RSReportServer.config file.
5. Select Open With from the context menu that appears.
6. Select Notepad from the cascading menu that appears next, as depicted in Illustration 25.
RSReportServer.config opens in Notepad.
7. Select Edit -> Find from the Notepad main menu.
The Find utility appears.
8. Type the following into the Find What box of the dialog:
The completed Find dialog appears as shown in Illustration 26.
9. Click Find Next.
The Find utility quickly locates the RunningRequestsDbCycle setting.
10. Click Cancel to close the Find utility.
The RunningRequestsDbCycle setting appears as depicted in Illustration 27.
The default, which appears in Illustration 27 above, is 60 seconds. While we will not make changes to the RSReportServer.config file in this practice session, it is important that we consider how the RunningRequestsDbCycle value interacts with the Report Execution Timeout setting, and how its injudicious use might render the Report Execution Timeout setting ineffective. The setting of this "evaluation sweep" determines how frequently Report Server performs a comparison between the accumulated processing time of the report and the Report Execution Timeout value we established in Site Settings above. If the value of the "sweep" cycle (RunningRequestsDbCycle) - the "comparison event" - is large enough to contain actual report run time within it, then report processing will complete regardless of the Report Execution Timeout.
As an example, let's say we set the Report Execution Timeout to 20 seconds, and we modify the RunningRequestsDbCycle setting in the RSReportServer.config file to 45 seconds. Let's further say that the report actually takes 40 seconds to process. It becomes easy to see how, although the report has clearly exceeded the Report Execution Timeout limitation, the event will not be detected if the processing time range occurs "between sweeps," (which only happen at 45-second intervals. Thus, the difference between Report Execution Timeout and actual runtime of 20 seconds (actual run time of 40 seconds less Report Execution Timeout of 20 seconds) is not captured within the interval between sweeps. The overall effect, therefore, is that the Report Execution Timeout is completely ignored, because the triggering difference "flies below radar."
Having met the DBA's expressed requirement for a global timeout limitation of 15 minutes for the general report population, and having discussed the important (albeit not significant in our present example) consideration of the interaction between the Report Execution Timeout setting and the RunningRequestsDbCycle "sweep" interval, we are ready to examine the fulfillment of the DBA's request that we enable an exception to the global Report Execution Timeout. We will apply an exception to our clone report in the next section.
11. In Notepad, select File -> Exit, closing RSReportServer.config without making changes.